我使用%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.哪个是更改宏变量值的正确方法?
如果您的周变量在数据集中彼此相邻,您可能需要考虑无宏方法:
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)
干净又方便.