我是SAS的新手,所以如果这个问题太简单,我会道歉。我已经尝试过广泛的搜索,但我不清楚如何继续。
我正在尝试使用与已存在的宏变量var1,...,varN相对应的功能初始化新的SAS数据集。为简单起见,假设N已在这些变量的生成过程中定义为宏变量。我想按照以下代码执行某些操作,但这不起作用:
%let var1 = 3;
%let var2 = 2.5;
%let var3 = 1;
[...]
%let varN = 2;
Data ABC;
do i = 1 to &N;
x = var&i.;
end;
run;
我认为其中一个问题是,与%do不同," i"不是一个宏观变量。我在cat(var,i)上尝试了变种,但它没有所需的行为,因为我想要& var& i来解决。 有没有办法在DATA步骤中完成这项工作?
答案 0 :(得分:3)
我无法想象这样做的情况实际上是一个好主意,然而,这是一个答案。你不能使用标准的宏变量&& var& i,因为那时你需要一个%DO循环。要将其保留在数据步骤中,请使用SYMGET。
%let var1=1;
%let var2=2;
%let var3=3;
%let N=3;
Data ABC;
do i=1 to &N;
x = symget(catt('var', i)); *character value;
y = symgetN(catt('var', i)); *numeric value;
output;
end;
run;
proc print data=abc;
run;