SAS 连接多个变量以创建数据驱动的宏语句
SAS Concatenate Multiple Variables to Create Data-Driven Macro Statements
为了让我的流程保持数据驱动,我尝试连接多个变量,用逗号分隔,以便最终将它们放入 PROC SQL
列表中以调用多个宏语句否则会使我的 SAS 程序混乱。
采用以下示例数据集:
DATA TEST;
INPUT YEAR CONDITION $ QRTS . SAMPLE $;
DATALINES;
2008 MI (1,2,3,4) A
2008 MI (1,2,3,4) B
;
RUN;
我想将这些变量连接在一起,再次用逗号分隔,并在前面添加 %APPEND
以创建一个巨大的宏语句列表。新的字符串变量,以及最终的宏语句,看起来像:
%APPEND(2008,MI,(1,2,3,4),A);
%APPEND(2008,MI,(1,2,3,4),B);
我使用以下方法编译均值和置信区间的字符串,我想它也会类似(我只是无法用我的数据弄清楚这些引号、逗号和竖线):
ci=compress(put(mean,7.2))||"("||compress(lo)||","|| compress(hi)||")";
一旦创建了这个长字符串变量,我就会 select 通过 PROC SQL
语句将这个变量变成一个长列表,如下所示:
PROC SQL;
SELECT DISTINCT *NEW LONG STRING VARIABLE*
INTO: MACROLIST SEPARATED BY ' '
FROM TEST;
QUIT;
最终,运行 &MACROLIST.
将调用数百个宏语句将多个数据集附加到一个大型主数据集中。我很欣赏你的见解。
回答了我自己的问题。这就是我需要的:
DATA TEST1; SET TEST;
STRING=COMPRESS(%NRSTR("%APPEND""("||COMPRESS(YEAR)||","||COMPRESS(CONDITION)||","|| COMPRESS(QRTS)||","|| COMPRESS(SAMPLE)||")"),"""");
RUN;
%APPEND
可以替换为任何创建的宏名称,因此这可能非常有用。
为了让我的流程保持数据驱动,我尝试连接多个变量,用逗号分隔,以便最终将它们放入 PROC SQL
列表中以调用多个宏语句否则会使我的 SAS 程序混乱。
采用以下示例数据集:
DATA TEST;
INPUT YEAR CONDITION $ QRTS . SAMPLE $;
DATALINES;
2008 MI (1,2,3,4) A
2008 MI (1,2,3,4) B
;
RUN;
我想将这些变量连接在一起,再次用逗号分隔,并在前面添加 %APPEND
以创建一个巨大的宏语句列表。新的字符串变量,以及最终的宏语句,看起来像:
%APPEND(2008,MI,(1,2,3,4),A);
%APPEND(2008,MI,(1,2,3,4),B);
我使用以下方法编译均值和置信区间的字符串,我想它也会类似(我只是无法用我的数据弄清楚这些引号、逗号和竖线):
ci=compress(put(mean,7.2))||"("||compress(lo)||","|| compress(hi)||")";
一旦创建了这个长字符串变量,我就会 select 通过 PROC SQL
语句将这个变量变成一个长列表,如下所示:
PROC SQL;
SELECT DISTINCT *NEW LONG STRING VARIABLE*
INTO: MACROLIST SEPARATED BY ' '
FROM TEST;
QUIT;
最终,运行 &MACROLIST.
将调用数百个宏语句将多个数据集附加到一个大型主数据集中。我很欣赏你的见解。
回答了我自己的问题。这就是我需要的:
DATA TEST1; SET TEST;
STRING=COMPRESS(%NRSTR("%APPEND""("||COMPRESS(YEAR)||","||COMPRESS(CONDITION)||","|| COMPRESS(QRTS)||","|| COMPRESS(SAMPLE)||")"),"""");
RUN;
%APPEND
可以替换为任何创建的宏名称,因此这可能非常有用。