SAS - 由宏中参数值命名的字符串

问题描述 投票:0回答:1

我有数据集 CODE_100 和 CODE_200。 我想将所有字段代码存储到变量 FILTER_Code_100 和 FILTER_Code_200 中,以便我可以使用它们进行查询。

应该是这样的 FILTER_CODE_100 = 'A','B','C','D','E','F','G';

MACRO SINGLE_SEG(FLAG);


SET WORK.CODE_&FLAG. END=EOF NOBS=NOBS;
RETAIN STR_FLAGS;
IF _N_= 1 THEN STR_FLAGS= CAT("'",CODE);
ELSE STR_FLAGS= CATS(STR_FLAGS, "','", CODE);

我已经尝试过了 调用 SYMPUT(FILTER_CODE_&FLAG.,CATS(STR_FLAG,"'"); 还答 %let FILTER_CODE_&FLAG。 = CATS(STR_FLAG,"'");

但没有成功

string sas retain
1个回答
1
投票

欢迎光临:-)

将 SAS 数据集中的值保存在宏变量中并不是一个好主意。相反,您应该直接在联接或您正在执行的任何操作中使用表值。

话虽如此,最简单的方法是使用 Proc SQL Select into。请参阅下面的一个小示例。应该能让你继续前进。

proc sql noprint;
   select quote(trim(name), "'") 
   into :names separated by ', '
   from sashelp.class
   ;
quit;

%put &names.;

结果:

'Alfred', 'Alice', 'Barbara', 'Carol', 'Henry', 'James', 'Jane', 'Janet', 'Jeffrey', 'John', 'Joyce', 'Judy', 'Louise', 'Mary', 
'Philip', 'Robert', 'Ronald', 'Thomas', 'William'
© www.soinside.com 2019 - 2024. All rights reserved.