SAS宏操作

时间:2016-12-20 10:19:00

标签: macros sas sum

我需要每次使用新的变量集多次创建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

&安培;很明显,当我尝试执行宏时,它会抛出一个错误。

有人可以帮助我吗?

1 个答案:

答案 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无害。一般来说,你应该关注ERRORWARNING

我指出这可能仍然会引发错误,因为您正在尝试替换变量(&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);