我刚刚开始学习SAS,并且想知道是否有人知道如果数据集中包含某个单词,则从数据集中删除某些变量的方法。我正在使用包含大量变量(100+)的数据集,其中包含“标签”一词,我希望放弃这些变量。不幸的是,标签这个词出现在变量名的末尾,所以我不能做一个简单的drop标签:显然我可以单独列出要删除的所有变量,但我只是想知道是否有人知道更简单的方法来完成这项任务。感谢阅读和任何帮助,你必须提供。
答案 0 :(得分:3)
您需要做的是提供一个包含变量名称的数据集,然后创建一个包含您要删除的宏变量。第一部分有三个(或更多)选项:
所有三个都给出相同的结果 - 变量名称(和其他东西)的数据集,然后您可以查询。
例如,使用PROC SQL
的{{1}}功能创建宏变量:
SELECT INTO
(根据您的需要替换标签;%是通配符)
然后你有一个宏变量proc sql;
select name into :droplist separated by ' '
from dictionary.columns
where libname='SASHELP' and memname='CLASS'
and name like '%eigh%';
quit;
,你可以在drop语句中使用它。
&droplist
答案 1 :(得分:3)
使用vcolumn表和proc sql创建宏变量宏变量:
proc sql noprint;
select trim(compress(name))
into :drop_vars separated by ' '
from sashelp.vcolumn
where libname = upcase('lib1')
and
memname = upcase('table1')
and
upcase(name) like '%LABEL%'
;
quit;
%put &drop_vars.;
data table2;
set table1;
drop &drop_vars.;
run;
proc sql将创建名称中包含'lib1'
的库label
中table1的所有变量的列表,并将其放入名为drop_vars
的宏变量中。 (upcase用于减少导致问题的可能性)
数据步骤然后使用drop
语句和drop_vars
变量删除列表中的所有变量。
注意:请务必检查%put statement
的输出,以确保不删除要保留的变量