如何使用数据步骤而不是SQL从数据集列创建宏变量?

时间:2015-04-21 05:12:27

标签: sas sas-macro datastep

我们可以使用语法

通过SAS SQL Procedure创建宏变量
select var into :mvar

但我想知道数据步骤是否有相同的方法。

我有一个数据集。

A    B
===  ===
a1   b1
a2   b2
a3   b3

我可以使用以下语句创建一个名为MA的宏变量。

proc sql noprint;
   select "'"||A||"'" into :MA separated by ","
   from dataset;
quit;

如何在数据步骤中执行此操作?

1 个答案:

答案 0 :(得分:7)

首先,创建样本数据集:

data dataset;
infile datalines;
input A  $ B $;
datalines;
a1 b1
a2 b2
a3 b3
;
run;

以下步骤几乎完成了PROC SQL的操作,使用CALL SYMPUT输出名为MA的宏变量:

data _NULL_;
  retain amac;
  length amac $35;
  set dataset;
  if _N_ = 1 then amac=a; else amac=cats(amac,',',a);
  put amac=;
  call symputx('MA',amac);
 run;

 %put &MA;