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

时间:2014-09-12 20:38:56

标签: sas sas-macro

如何将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,但它们似乎只适用于单个观察。

谢谢。

2 个答案:

答案 0 :(得分:5)

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

创建&varlist.宏变量,由分隔符分隔。如果您没有指定分隔字符,则会创建一个仅包含最后一行值的变量。

还有很多其他方法,但这是最简单的方法。例如,CALL SYMPUTX会做同样的事情,除非将所有行拉成一行很复杂。

答案 1 :(得分:0)

您可以直接在proc中使用它,不需要宏变量。为简单起见,我为var1使用了数值,但是你明白了。

    function timeUp() {
      setTimeout(function(){
        return alert("hi");
      }, 2000);
    }

    document
        .getElementById("startGame")
        .addEventListener('click', timeUp);