在SAS中修改宏变量的值

use*_*152 0 sas

我使用%let选项在我的sas代码中创建了两个宏变量.

data sasdata1.dataone;
set sasdata1.dataone ;
%let week=1;
%let sum=0;
do i=1 to 53;
%let sum= _W&week._NRX + &sum.;
week=&week+1;
end;
drop i;
week=&week;
sum=&sum.;
run;
Run Code Online (Sandbox Code Playgroud)

即使在循环执行后,周变量的值仍为1.哪个是更改宏变量值的正确方法?

mvh*_*weg 6

如果您的周变量在数据集中彼此相邻,您可能需要考虑无宏方法:

data sasdata1.dataone;
    set sasdata1.dataone;
    sum = sum(of _W1_NRX--_W53_NRX); *double dash means that the columns are next to each other with _W1_NRX as first and _W53_NRX as last;
run;
Run Code Online (Sandbox Code Playgroud)

如果您的周变量以周数结尾,则它们甚至不需要彼此相邻:

data sasdata1.dataone;
    set sasdata1.dataone;
    sum = sum(of _W1-_W53); *single dash implies that the suffix is numerically increasing;
run;
Run Code Online (Sandbox Code Playgroud)

干净又方便.