如何在PROC SQL中用CATS引用SAS变量



我似乎搞不清楚这是一件非常基本的事情。特定表中的列是前面有下划线的数字,我在宏变量中存储了一个数字,我要使用的列的名称就是那个带下划线的数字。假设数字是9,当我编写以下代码时,我会得到一列,其中每个观测值都是_9,而不是来自该数据集的列_9。

proc sql;
create table TM1 as
select cats("_",&rat_as_num) from default_data;
quit;
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;

最新更新