Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 如何使用数据步骤而不是SQL从数据集的列创建宏变量?_Sas_Sas Macro_Datastep - Fatal编程技术网

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; 如何在数据步骤中执行此操作?首先,创

我们可以使用以下语法通过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;

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

首先,创建示例数据集:

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或数据步骤中。