【问题标题】:SAS Macro operationsSAS 宏操作
【发布时间】:2016-12-20 10:18:59
【问题描述】:

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

& 显然,当我尝试执行宏时,它会引发错误。

谁能帮帮我?

【问题讨论】:

    标签: macros sas sum


    【解决方案1】:

    调用宏时,需要在宏名前加上%符号,例如:

    %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 是无害的。一般而言,您应该关注的是ERRORs 和WARNINGs。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多