2014-09-12 183 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;