2014-10-02 63 views
1

我有一个需要在SAS宏中运行的变量列表。如何将宏变量有效地循环到SAS宏函数中

%let var= 
A10Y 
B2D 
C112D 
D 
ER 
RT 
DDS 
AQWE 
DA 

And I have a macro like this: 
%macro st(inputx); 
proc means data = suy; 
var &inputx.; 
run; 
%mend; 

我想编写一个循环,因为如果变量的数量都大于100,我不想通过一个指定他们之一。

+1

为什么不能在VAR声明立刻打电话给他们呢?超过100个变量的输出也很愚蠢,所以我猜这不是整个问题。也许更多的细节会有帮助。 – Reeza 2014-10-02 18:22:01

+0

我在宏中使用的函数不像proc的意思,一些非常复杂的函数,不能简单地使用&var在一起。 proc手段只是一个例子。 – 2014-10-02 18:29:09

回答

2

好的。我不会使用宏,我会使用call execute。

创建一个数据集来保存你的所有变量列表或任何然后执行以下操作:

*Create list of variables; 
proc sql; 
    create table var_list as 
    select name 
    from sashelp.vcolumn 
    where libname='SASHELP' 
     and memname='CLASS' 
     and type='num'; 
run; 

*Create macro; 
%macro st(inputx); 
    proc means data = sashelp.class; 
     var &inputx.; 
    run; 
%mend; 

*Call macro using call execute; 
data _null_; 
    set var_list; 
    call execute ("%st("||name||");"); 
run;