SAS中keep语句中的宏变量列表

时间:2014-07-30 15:57:04

标签: macros sas

我有变量名存储在宏变量中,我希望在数据步骤的keep语句中使用。以下是一个例子:

data mydata;
set oldata;
keep &macrovar1-&macrovar&lastnum;
run;

我在尝试使用上面的代码时遇到错误,问题是&macrovar&lastnum&lastnum是我想要保留的变量总数。如果我用& macrovar#替换& macrovar& lastnum,我也会得到错误。如果我将&macrovar&lastnum替换为&macrovar#,然后单独列出所有&macrovar变量,&macrovar1 &macrovar2 ... &macrovar#,我可以让代码生效。是否有必要的语法才能使上面的代码工作?

1 个答案:

答案 0 :(得分:2)

你不能在这样的自动列表中做宏变量。

您可能应该做的是将值选择为单个宏变量。你在做这样的事吗?

proc sql;
 select name into :mvar1-:mvar999
  from dataset;
quit;

请改为:

proc sql;
  select name into :mvarlist separated by ' '
    from dataset;
quit;