CATS SAS 函数中的选项名称无效?
Invalid option name in CATS SAS function?
我有一个 SAS 宏,我想在其中创建一个数据集名称,然后将该数据集导出到一个 csv 文件。
%macro export(outputDataset, prefix, outputFileName);
%let dName = cats(&prefix, test);
%let dName2 = cats(&prefix, test2);
data &outputDataset;
set &dName &dName2;
run;
proc export data=&outputDataset outfile="outputDir/&outputFileName" replace; run;
%mend export;
但是,当我使用
调用宏时
%export(retain, hh_dpt, retained.csv)
我收到以下错误:
ERROR: Invalid option name hh_dept.
有人知道问题出在哪里吗?谢谢!
%let dName = cats(&prefix, test);
将字符串cats(hh_dpt, test)
存入宏变量dName
。当数据步骤编译时,SAS 看到:
data retain
set cats(hh_dept, test) cats(hh_dept, test2);
run;
这是对 cats
函数的无效使用。您不能使用 SAS 函数在 Data Step set
语句中连接数据集名称。您可以这样更正:
data retain;
set &prefix.test &prefix.test2;
run;
或
%let dName = &prefix.test;
%let dName2 = &prefix.test2;
data retain;
set &dName &dName2;
run;
其中&prefix
以.
结束,表示字符串prefix
是要解析的宏变量的名称。如果没有 .
,单词扫描仪将假设您的宏变量的全名是 &prefixtest
.
根据您的代码试试这个。
%macro export(outputDataset, prefix, outputFileName);
%let dName =%sysfunc(catx(.,&prefix, test));
%let dName2 =%sysfunc(catx(.,&prefix, test2));
data &outputDataset;
set &dName &dName2;
run;
proc export data=&outputDataset outfile="outputDir/&outputFileName" replace; run;
%mend export;
%export(retain, hh_dpt, retained.csv)
我有一个 SAS 宏,我想在其中创建一个数据集名称,然后将该数据集导出到一个 csv 文件。
%macro export(outputDataset, prefix, outputFileName);
%let dName = cats(&prefix, test);
%let dName2 = cats(&prefix, test2);
data &outputDataset;
set &dName &dName2;
run;
proc export data=&outputDataset outfile="outputDir/&outputFileName" replace; run;
%mend export;
但是,当我使用
调用宏时%export(retain, hh_dpt, retained.csv)
我收到以下错误:
ERROR: Invalid option name hh_dept.
有人知道问题出在哪里吗?谢谢!
%let dName = cats(&prefix, test);
将字符串cats(hh_dpt, test)
存入宏变量dName
。当数据步骤编译时,SAS 看到:
data retain
set cats(hh_dept, test) cats(hh_dept, test2);
run;
这是对 cats
函数的无效使用。您不能使用 SAS 函数在 Data Step set
语句中连接数据集名称。您可以这样更正:
data retain;
set &prefix.test &prefix.test2;
run;
或
%let dName = &prefix.test;
%let dName2 = &prefix.test2;
data retain;
set &dName &dName2;
run;
其中&prefix
以.
结束,表示字符串prefix
是要解析的宏变量的名称。如果没有 .
,单词扫描仪将假设您的宏变量的全名是 &prefixtest
.
根据您的代码试试这个。
%macro export(outputDataset, prefix, outputFileName);
%let dName =%sysfunc(catx(.,&prefix, test));
%let dName2 =%sysfunc(catx(.,&prefix, test2));
data &outputDataset;
set &dName &dName2;
run;
proc export data=&outputDataset outfile="outputDir/&outputFileName" replace; run;
%mend export;
%export(retain, hh_dpt, retained.csv)