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

Macros SAS中keep语句中的宏变量列表,macros,sas,Macros,Sas,我想在数据步骤中的keep语句中使用宏变量中存储的变量名。以下是一个例子: data mydata; set oldata; keep &macrovar1-&macrovar&lastnum; run; 我尝试使用上面的代码时出错,问题是¯ovar&lastnum&lastnum是我要保留的变量总数。如果我将¯ovar&lastnum替换为¯ovar,我也会得到错误。如果我用¯ovar#替换¯ovar&lastnum,然后分别列

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

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

我尝试使用上面的代码时出错,问题是
¯ovar&lastnum
&lastnum
是我要保留的变量总数。如果我将¯ovar&lastnum替换为¯ovar,我也会得到错误。如果我用
¯ovar#
替换
¯ovar&lastnum
,然后分别列出所有
¯ovar
变量,
¯ovar1¯ovar2,
¯ovar1¯ovar2,
¯ovar2>,我就可以让代码正常工作&例如,宏变量#
。要使上述代码正常工作,是否需要某种语法?

您不能在这样的自动列表中执行宏变量

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

proc sql;
 select name into :mvar1-:mvar999
  from dataset;
quit;
改为这样做:

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