【问题标题】:How to reference SAS variable with CATS in PROC SQL?如何在 PROC SQL 中使用 CATS 引用 SAS 变量?
【发布时间】:2018-07-13 17:48:21
【问题描述】:

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

    proc sql;
    create table TM1 as
        select cats("_",&rat_as_num) from default_data;
    quit;

【问题讨论】:

  • &rat_as_num 究竟解析到什么?请张贴他的输出:%put &rat_as_num.;.

标签: sql sas sas-macro


【解决方案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 cmets 这也有效:

proc sql;
create table test2 as
select _&rat_as_nun from test;
quit;

【讨论】:

  • 请注意为什么不直接使用select _&rat_as_num. from test。整个sysfunc(cats 路线似乎都在绕圈子。
  • 是的,到目前为止,这是一个更简单的解决方案!
猜你喜欢
  • 2017-10-04
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多