sas - 使用数据集变量的文件名语句的正确语法
问题描述
我是 SAS 新手,我似乎无法为此计算出正确的语法。我有一个数据集(fileList),其中一个字段(projFile)包含一个文件名。我希望打开文件并将内容读入将要创建的第二个字段。该文件被压缩(它是一个 SAS-EG 项目文件),所以我被告知我应该使用带有zip选项的Filename语句来读取文件。但是,无论我如何引用projFile,它都不喜欢它。
data fileList;
set fileList;
filename inzip zip "&projFile" member="project.xml";
infile inzip;
input fileContent $char2000.;
output;
run;
我也可能输入语句错误,但在我能解决这个问题之前,我不知道。谢谢。
解决方案
如果您总是从 ZIP 文件中读取相同的文件(成员),您可以使用 infile 语句中的 FILEVAR= 选项来切换您正在从哪个 ZIP 文件中读取该成员。
因此,如果我有三个 ZIP 文件,每个文件中都有一个名为 example.txt 的文件,以及一个带有文件名列表的数据集。
data fnames ;
input filename $80.;
cards;
c:\downloads\file1.zip
c:\downloads\file2.zip
c:\downloads\file3.zip
;
然后我可以使用该数据集来创建一个包含这些文件信息的新数据集。
data test;
set fnames ;
fname=filename;
infile in zip filevar=fname member='example.txt' end=eof truncover;
do while (not eof);
input line $100. ;
output;
end;
run;
如果驱动数据集有要读取的 ZIP 文件中的成员列表,那么您也可以在 INFILE 语句中使用 MEMVAR= 选项。
data members ;
infile cards dsd dlm='|' truncover ;
input filename :$80. memname :$80.;
cards;
c:\downloads\file1.zip|example.txt
c:\downloads\file2.zip|example.txt
c:\downloads\file3.zip|example.txt
;
data test;
set members ;
filevar=filename;
memvar=memname;
infile in zip filevar=filevar memvar=memvar end=eof truncover;
do while (not eof);
input line $100. ;
output;
end;
run;
推荐阅读
- python - 继承中的 nameError
- c# - ASP.NET CORE MVC ViewModel 属性在发布时返回 Null
- python - 在嵌套的 for 循环中生成具有列/行号的 2x3 表
- r - 如何将列表变成“textmodel_wordscores”或“textmodel”?
- ios - 如何在不移除动画的情况下创建过渡
- c++ - 如何使用 C++ 中的继承函数访问派生类中的局部变量
- node.js - 在 mongoose 中使用多属性(refrenced 和 nrml)过滤文档,并使用请求查询表达
- javascript - C# WebBrowser 调用 JavaScript
- python-3.x - 当要分配的值取决于另一列时,如何根据条件更新熊猫
- javascript - 如何使用 webpack 生成唯一的文件名?