使用变量值作为宏变量的值

Use variable values as the value for a macro variable

我有一个 SAS 数据集,其中有一列包含我想用作宏变量的值。假设 SAS 数据集看起来像这样只有一列:

varname
34
367
399
87

我想要的是将列中的所有值变成宏变量中的串联字符串(适合在带有 in 运算符的 if 语句中使用)。结果将等同于:

%let var = %str('34','367','399','87');

我将如何做到这一点?

我会用PROC SQL,但还有其他方法:

proc sql noprint;
select "'" || varname || "'"
   into :var separated by ','
   from have;
quit;

%put var: &var;

这会将变量值与两边的 ' 连接起来。 separated by 块将在所有值之间放置一个 ,:var 告诉 SQL 将结果保存在名为 var;

的宏中