CATS SAS函数中的选项名称无效?
我有一个SAS宏,我想在其中创建一个数据集名称,然后将该数据集导出到csv文件CATS SAS函数中的选项名称无效?,sas,sas-macro,Sas,Sas Macro,我有一个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
%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\u dpt,test)
存储到宏变量dName
中。当数据步骤编译时,SAS会看到:
data retain
set cats(hh_dept, test) cats(hh_dept, test2);
run;
这是对cats
功能的无效使用。不能在数据步骤set
语句中使用SAS函数连接数据集名称。您可以这样更正:
data retain;
set &prefix.test &prefix.test2;
run;
或
其中
&前缀
以
结尾,表示字符串前缀
是要解析的宏变量的名称。如果没有
,word scanner将假定宏变量的全名为&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)
不要调用CAT()函数将宏变量值串在一起。只要在你想要的地方引用它们就行了<代码>&前缀.测试
%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)