我知道我可以有类似以下内容来计算所有字符的频率:
proc freq data=sashelp.class;
tables _char_;
run;
但是,有没有办法排除某些变量?我想做这样的事情:
proc freq data=sashelp.class;
tables _char_ EXCEPT VAR1 VAR2;
run;
非常感谢!
您可以使用drop = ,如下所示。
proc freq data=sashelp.cars(drop=origin make); tables _char_; run;
当然,丢弃示例是最简单的,如果这正是请求,则可能是最好的。
但是,如果它略有不同 - 例如,您希望包含(或排除(与特定模式匹配的所有字符变量,则可以使用从dictionary.columns(或proc内容输出数据集(构造的宏变量。
proc sql;
select name
into :freqlist separated by ' '
from dictionary.columns
where memname='YOURTABLE' and libname='YOURLIB'
and type='char' and name like 'PATTERN%'
;
quit;
显然,适当地填写各种大写字母。 通常 MEMNAME、LIBNAME 和 NAME 存储为大写,但并非总是如此,因此请考虑将 UPCASE(( 添加到它们中。
然后,可以将 tables 语句放在 tables 语句上&freqlist.;
以获取与查询匹配的列的列表。