Sas 如何使用数据步骤而不是SQL从数据集的列创建宏变量?
我们可以使用以下语法通过SAS SQL过程生成宏变量Sas 如何使用数据步骤而不是SQL从数据集的列创建宏变量?,sas,sas-macro,datastep,Sas,Sas Macro,Datastep,我们可以使用以下语法通过SAS SQL过程生成宏变量 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; 如何在数据步骤中执行此操作?首先,创
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;
如何在数据步骤中执行此操作?首先,创建示例数据集:
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;
首先,创建示例数据集:
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;
谢谢,这就是我想要的。再次感谢您可以将
if,then,else
语句替换为callcatx(',',amac,a),从而稍微简化它代码> @ USS345 71616:如果这充分回答了你的问题,请考虑将它标记为接受。谢谢,这就是我想要的。再次感谢您可以将if,then,else
语句替换为callcatx(',',amac,a),从而稍微简化它代码> @ USS345 71616:如果这充分回答了您的问题,请考虑将其标记为接受。您可以使用<代码>引用<代码>函数,而不是所有烦琐的连接,顺便说一下,在SQL或数据步骤中,您可以使用<代码>引用<代码>函数,而不是所有那些烦人的连接,顺便说一下,在sql或数据步骤中。