我似乎无法弄清的非常基本的东西。特定表中的列是在其前面带有下划线的数字,我在宏变量中存储了一个数字,并且我要使用的列的名称是带下划线的该数字。假设数字为9,当我编写以下代码时,会得到一个列,其中每个观察值都是_9而不是该数据集中的_9列。
proc sql;
create table TM1 as
select cats("_",&rat_as_num) from default_data;
quit;
答案 0 :(得分:1)
CATS返回字符串,而不是变量名。因此,变量名称将无关紧要,您将获得一个带有_RAT_AS_NUM_VALUE的字符串。
要返回变量名称,请改用%SYSFUNC(),
data test;
_9 = 4;
run;
%let rat_as_num=9;
proc sql;
create table test2 as
select %sysfunc(cats(_, &rat_as_num)) from test;
quit;
proc print data=test2;
run;
每个@Richards评论也可以:
proc sql;
create table test2 as
select _&rat_as_nun from test;
quit;