ID a1 a2 a3 a4 _1 _2 _3 _4 _5 _6 _7 _8 _9
1 _1 _3 _6 _9 8 5 9 8 6 10 2 1 4
2 _2 _5 _8 _9 10 6 2 7 10 8 3 5 9
3 _1 _2 _4 _8 3 6 1 9 6 9 3 0 4
... ... ...
这里a1-a4显示列号,分别对应变量名_1-_9。我要创建三个变量v1、v2、v3,其中
For ID=1, v1=sum(of _1-_3), v2=sum(of _3-_6),v3=sum(of _6-_9);
For ID=2, v1=sum(of _2-_5), v2=sum(of _5-_8),v3=sum(of _8-_9);
For ID=3, v1=sum(of _1-_2), v2=sum(of _2-_4),v3=sum(of _4-_8);
.... ...
例如,对于 ID=1,v1=8+5+9=22,v2=9+8+6+10=33。
这是我的代码:
%Macro sumup;
data test; set test;
%do n=1 %to 3;
v&n=sum (of a&n-a%eval(&n+1));
%end;
run;
%mend;
%sumup;
问题是 a&n 和 a%eval(&n+1) 被视为变量名。但我想将它们的值视为变量名。我知道在调用执行中我们可以使用'||a&n||'。但是在宏中呢?谢谢!