将SAS数据列转换为Macro变量?

vdi*_*ddy 2 sas sas-macro

如何将SAS数据列的输出转换为宏变量?

例如:

Var1 | Var2
-----------
  A  |  1
  B  |  2
  C  |  3
  D  |  4
  E  |  5
Run Code Online (Sandbox Code Playgroud)

如果我想将包含Var1中所有值的宏变量用于PROC REG或其他过程,该怎么办?如何将该列提取到可以在其他PROCS中使用的变量中?

换句话说,我想生成等效的语句:

%LET Var1 =

  A
  B
  C
  D
  E
  ;
Run Code Online (Sandbox Code Playgroud)

但是我会从以前的过程中得到不同的结果,所以我不能只是执行'%LET'。我一直在探索SYMPUT和SYMGET,但它们似乎仅适用于单个观测值。

谢谢。

Joe*_*Joe 5

proc sql;
  select var1 
    into :varlist separated by ' '
    from have;
quit;
Run Code Online (Sandbox Code Playgroud)

创建&varlist.由分隔符分隔的宏变量。如果不指定分隔符,它将创建仅具有最后一行值的变量。

还有很多其他方法,但这是最简单的。 CALL SYMPUTX例如,将执行相同的操作,不同之处在于将所有行都拉成一列很复杂。