假设我有一堆变量(称为eq3_xxxxx,其中xxx是变量),它们都有5个可能的级别(1,2,3,4,5),我想为每个级别创建一个虚拟变量每个变量。
我以为我可以做类似的事情:
%macro eq_levels(eq3:);
data mydata;
%do i = 1 %to 5;
x=cats(%eq3:,%i);
%end;
%mend;
但这似乎不起作用。我宁愿不使用SQL或类似的东西,因为我认为数组和do循环解决方案应该足够了,但是如果可以直截了当地解释它,我会很开心。
答案 0 :(得分:0)
这可能只是您遇到的一些小问题。这是你想要的吗?
%macro eq_levels(eq3);
data;
do i = 1 to 5;
x = cats(&eq3,i);
output;
end;
run;
%mend;
%eq_levels("eq3_");
输出:
i x
1 1 eq3_1
2 2 eq3_2
3 3 eq3_3
4 4 eq3_4
5 5 eq3_5
答案 1 :(得分:0)
我可能误读了这个,但我知道OP需要多个变量:
%macro macro_evn;
data mydata;
%do i=1 %to 5;
var&i=&i.;
output;
%end;
%mend;
%macro_evn;
导致
var1 var2 var3 var4 var5
1 . . . .
1 2 . . .
1 2 3
....
根据需要可以轻松填写。然后,也许我误解了这个问题。