从宏变量SAS创建数据集

时间:2015-10-12 16:38:43

标签: sas sas-macro

我有一个存储名称字符串的宏变量,例如:

  

%let operation = add subtract divide multiply;

我想将宏中的每个元素(显示为观察)转换为数据集变量。所以数据集应如下所示:

<obs> <operation>
<1>   add
<2>   subtract
<3>   divide
<4>   multiply

2 个答案:

答案 0 :(得分:3)

使用SCAN()函数。默认分隔符适用于您的示例,否则您可以指定要使用的确切分隔符。

%let operation= add subtract divide multiply;
data want ;
  length obs 8 operation $20 ;
  do obs=1 by 1 until (operation=' ');
    operation=scan("&operation",obs);
    if operation ne ' ' then output;
  end;
run;

答案 1 :(得分:1)

我仍然不了解你拥有什么以及你想要什么。这个例子是设计的,但可能会给你一些语法等方面的帮助。

%let operation = add subtract multiply divide;

data operation;
   length &operation 8;
   array operation[*] &operation (2 3 10 4);
   put 'NOTE: ' (operation[*])(=);
   run;

*data set of names;
proc transpose data=operation(obs=0) out=names name=operation;
   var &operation;
   run;
proc print;
   run;