我有一个包含~6000个变量的数据集,这些变量在82个组中。变量名称全部采用" a001yr,a001sta,a001tot ... a082tot" (换句话说," a cyclenum setsuffix ")。有没有办法干净地挑选出一个特定集合的所有数值变体(例如a001yr,a002yr,... a082yr)来构建一个数组?还是我不习惯手写出全套变量?
(我使用的是SAS 9.2)
答案 0 :(得分:0)
您的描述仍然有点模糊,有哪些规则可以定义'一个特定的集合'?对于您的示例,您可以尝试以下操作:
proc sql;
select name into :varname separated by ' ' from dictionary.columns
where libNAME='WORK' and upcase(memname)='TEST' AND PRXMATCH('/a\d+yr/io',name) > 0 and type='num';
quit;
代码使用PRX函数(我相信它们可用于9.2)从“工作”中选择这些变量名称。图书馆,' TEST'表格,以' a'开头,然后是一堆数字,以' yr'结尾。还有数字,然后将它们放入宏变量varname中,这样就可以在下游数据步骤代码中使用它,例如:
data want;
set test;
array tst &varname;
blah blah;
run;