我需要每次使用新的变量集多次创建4个变量的总和。对于例如A1 = sum(a1,a2,a3,a4),B1 = sum(b1,b2,b3,b4)&等等。所以,我正在尝试编写一个可以帮助我轻松完成的宏。以下是代码:
%macro SUM2(VAR1,var2,var3,VAR4);
data Subs_60_new;
set Subs_60;
substr(&var1,1,10)=sum(&var1,&var2,&var3,&var4);
run;
%mend sum2;
options mprint mlogic;sum2(ADDITIONAL_INFO_Q1,ADDITIONAL_INFO_Q2,ADDITIONAL_INFO_Q3,ADDITIONAL_INFO_Q4);
我正在使用SAS EG同样的&当我运行宏时,我得到以下注释:
NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR
&安培;很明显,当我尝试执行宏时,它会抛出一个错误。
有人可以帮助我吗?
答案 0 :(得分:0)
调用宏时,需要在宏名称前面加上%
符号,例如:
%macro SUM2(VAR1,var2,var3,VAR4);
data Subs_60_new;
set Subs_60;
substr(&var1,1,10)=sum(&var1,&var2,&var3,&var4);
run;
%mend sum2;
options mprint mlogic;
%sum2(ADDITIONAL_INFO_Q1,ADDITIONAL_INFO_Q2,ADDITIONAL_INFO_Q3,ADDITIONAL_INFO_Q4);
NOTE
无害。一般来说,你应该关注ERROR
和WARNING
。
我指出这可能仍然会引发错误,因为您正在尝试替换变量(&var1
)中的字符,该变量看起来好像应该包含一个数字字段(属于一个sum
函数)。鉴于您对要实现的目标的描述,我建议将新变量名称添加为另一个宏参数 - 如下所示:
%macro SUM2(VAR1,var2,var3,VAR4,varname);
data Subs_60_new;
set Subs_60;
&varname=sum(&var1,&var2,&var3,&var4);
run;
%mend sum2;
options mprint mlogic;
%sum2(ADDITIONAL_INFO_Q1,ADDITIONAL_INFO_Q2
,ADDITIONAL_INFO_Q3,ADDITIONAL_INFO_Q4
,MyNewVariable);