SAS删除多个索引的数据

Ant*_*tin 4 optimization sas

我的问题可能很愚蠢,但我还没有找到答案.我有一个变量var index by tens:var10,var20 ... var90.在我的代码的某些方面,我想放弃所有这些.

我可以

data want(drop=var10 var20 var30 var40 var50 var60 var70 var80 var90);
    set have;
run;
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种更为浓缩的方式.我知道是否有变量索引10,11,12,13 ...我可以使用

(drop=var10-90)
Run Code Online (Sandbox Code Playgroud)

但是因为我没有它们,如果我使用这个指令它仍然可以完成这项工作,但是有一个警告,这对我来说是不可接受的(我必须创建程序,这些程序将由几乎没有编程知识的人使用,所以他们会报告像这样的警告).

提前致谢

Chr*_*s J 5

如果var<xx>变量都是十的倍数,即没有其他变量开头var,则可以使用冒号运算符,它充当通配符,例如

  drop var: ; /* drop all variables beginning with 'var' */

或者,您可以动态生成所有变量的列表:

proc sql noprint ;
  select name into :VARLIST separated by ' '
  from dictionary.columns
  where libname = 'WORK'
    and memname = 'HAVE'
    and compress(name,,'ka') = 'VAR'
    and mod(input(compress(name,,'kd'),8.),10) = 0 /* convert var<xx> to xx and check divisible by 10 */
  order by name ;
quit ;

data want (drop=&VARLIST) ;
  set have ;
run ;