2014-09-12 241 views
2

如何將SAS數據列的輸出轉換爲宏變量?將SAS數據列變成宏變量?

例如:

Var1 | Var2 
----------- 
    A | 1 
    B | 2 
    C | 3 
    D | 4 
    E | 5 

如果我想包含所有在VAR1值的一個PROC REG或其他程序使用宏變量?如何將該列提取到可用於其他PROCS的變量中?

換句話說,我希望生成等效的語句:

%LET Var1 = 

    A 
    B 
    C 
    D 
    E 
    ; 

但我將不得不從以前的程序來不同的結果,所以我不能只是做一個「%LET」。我一直在探索SYMPUT和SYMGET,但他們似乎只適用於單一的觀察。

謝謝。

回答

4
proc sql; 
    select var1 
    into :varlist separated by ' ' 
    from have; 
quit; 

創建&varlist.宏變量,由分隔字符分隔。如果你沒有指定分隔字符,它只會創建一個只有最後一行值的變量。

還有很多其他的方法,但這是最簡單的。例如CALL SYMPUTX會做同樣的事情,除非讓它把所有的行合併成一個很複雜。

+0

非常感謝您的迅速和有益的答覆。這就是訣竅! – vdiddy 2014-09-15 13:30:14

0

你可以直接在proc中使用它,不需要宏變量。爲簡單起見,我使用了var1的數字值,但您明白了。

data test; 
input var1 var2 @@; 
datalines; 
1 100 2 200 3 300 4 400 5 500 
run; 



proc reg data=TEST; 
MODEL VAR1 = VAR2; 
RUN;