SAS:如何计算除某些字符变量之外的所有字符变量的频率



我知道我可以有类似以下内容来计算所有字符的频率:

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.;以获取与查询匹配的列的列表。

最新更新