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

标签 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,但它们似乎只适用于单一观察。

谢谢。

最佳答案

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

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

还有很多其他方法,但这是最简单的。例如,CALL SYMPUTX 将执行相同的操作,只是将所有行合并为一个很复杂。

关于sas - 将 SAS 数据列转换为宏变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25816462/

相关文章:

sas - 在 SAS 中读取句点作为字符值

sas - 当我将 SAS 数据集导出到 csv 时;它正在修剪字符中的所有前导空格

sas - 从SAS中的字符串中删除单引号

sas - 如何以 YYYYMM 格式编写几个月的宏循环?

sas - 如何在 SAS 中的 libname 语句的引用字符串中调用宏变量

oracle - 读取Oracle数据库时,在Proc SQL的where子句中使用数据集观察

sas - PROC DATASETS 宏变量错误

sas - 简化宏定义

sas - 使用 SAS 进行大小写转换

sas - 通过两列创建行号列 SAS