我有数据集 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,"'");
但没有成功
欢迎光临:-)
将 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'