SAS参数表
我想改进一个SAS宏,它循环遍历一些变量并为它们打印频率表 以下是工作宏:SAS参数表,sas,Sas,我想改进一个SAS宏,它循环遍历一些变量并为它们打印频率表 以下是工作宏: %macro iraCatFreq(IRACatsList); %local i next; %let i=1; %do i=1 %to %sysfunc(countw(&IRACatsList)); %let next=%scan(&IRACatsList,&i); proc freq data=out.SCF16_Cath; weight WGT; by ANY
%macro iraCatFreq(IRACatsList);
%local i next;
%let i=1;
%do i=1 %to %sysfunc(countw(&IRACatsList));
%let next=%scan(&IRACatsList,&i);
proc freq data=out.SCF16_Cath;
weight WGT;
by ANYPEN;
tables &next;
format rRothContrBin allBinaries_format.;
run;
%end;
%mend iraCatFreq;
%iraCatFrew(rRothContrBin sRothContrBin oRothContrBin rRegContrBin sRegContrBin oRegContrBin);
我希望通过将变量名的参数列表(rRothContrBin sRothContrBin oRothContrBin rRegContrBin sRegContrBin oRegContrBin)替换为单个参数来改进此宏
以下是我拼凑的方法:
/*Create a table of variable names for IRA types and owners*/
data IRACats;
infile datalines;
length x $ 17;
input x $;
datalines;
rRothContrBin
sRothContrBin
oRothContrBin
rRegContrBin
sRegContrBin
oRegContrBin
;
/*Convert table of strings into a macro variable, &IRACatsList */
proc sql noprint;
select x into :IRACatsList separated by ' '
from IRACats;
quit;
%put IRACatsList = &IRACatsList;
在运行此方法后,我尝试运行宏
%iraCatFreq(&IRACatsList);
它可以工作,但是没有数据和过程sql步骤有更好的方法吗?您可以使用单个宏变量调用现有宏,而无需使用以下过程sql或数据步骤:
%let IRACatsList = rRothContrBin sRothContrBin oRothContrBin rRegContrBin sRegContrBin oRegContrBin;
%iraCatFreq(&IRACatsList);
您可以使用单个宏变量调用现有宏,而无需使用proc sql或以下数据步骤:
%let IRACatsList = rRothContrBin sRothContrBin oRothContrBin rRegContrBin sRegContrBin oRegContrBin;
%iraCatFreq(&IRACatsList);
有什么理由不把所有这些变量放在proc freq中的一个
表语句中吗?我不明白这个问题。您的宏已经接受了一个接受值列表的参数。你想改变什么?呃。。。我忘了我可以。你有什么理由不把所有这些变量放在proc freq中的一个表语句中?我不明白这个问题。您的宏已经接受了一个接受值列表的参数。你想改变什么?呃。。。我忘了我能。