2014-10-02 81 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;