我正在尝试重现此处找到的代码,特别是第7页: http://www.nesug.org/proceedings/nesug04/pm/pm13.pdf
/* set up example*/
%let var_1 = 'abc';
%let var_2 = 'def';
%let var_3 = 'ghi';
%let val_1 = 1.5;
%let val_2 = 3;
%let val_3 = 4.5;
/* use symget to create a list of var names and values */
data scores;
length var_name $32 value 8.;
do _N_ = 1 to 3;
var_name = symget('var_' || left(_N_));
value = symget('val_' || left(_N_));
end;
run;
然而,我得到的最终结果只是最后一个变量,而不是全部3:
var_name value
ghi 4.5
我想:
var_name value
abc 1.5
def 3
ghi 4.5
为什么这不起作用?
答案 0 :(得分:4)
您缺少output
语句来写每一行。将其插入此处:
do _N_ = 1 to 3;
var_name = symget('var_' || left(_N_));
value = symget('val_' || left(_N_));
output;
end;