【发布时间】:2018-04-07 23:06:53
【问题描述】:
我知道我可以使用以下方法来计算所有字符的频率:
proc freq data=sashelp.class;
tables _char_;
run;
但是,有没有办法排除一些变量?我想做类似的事情:
proc freq data=sashelp.class;
tables _char_ EXCEPT VAR1 VAR2;
run;
非常感谢!
【问题讨论】:
标签: sas
我知道我可以使用以下方法来计算所有字符的频率:
proc freq data=sashelp.class;
tables _char_;
run;
但是,有没有办法排除一些变量?我想做类似的事情:
proc freq data=sashelp.class;
tables _char_ EXCEPT VAR1 VAR2;
run;
非常感谢!
【问题讨论】:
标签: sas
你可以使用 drop = ,如下所示。
proc freq data=sashelp.cars(drop=origin make); tables _char_; run;
【讨论】:
drop 示例是最简单的,当然也可能是最好的,如果这正是请求的话。
但是,如果稍有不同 - 例如,您想要包含(或排除)与特定模式匹配的所有字符变量,您可以使用从 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() 添加到它们。
然后您可以将&freqlist.; 放在tables 语句中以获取与您的查询匹配的列列表。
【讨论】: