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

时间:2018-04-07 23:06:53

标签: sas

我知道我可以使用以下内容来计算所有Chars的频率:

function castStringToFloat(number) {
let numberString = number.replace(",", ".");
return parseFloat(numberString);}

但是,有没有办法排除一些变量?我想做点什么:

proc freq data=sashelp.class;
tables _char_;
run;

非常感谢你!

2 个答案:

答案 0 :(得分:5)

你可以使用drop =,如下所示。

proc freq data=sashelp.cars(drop=origin make);
  tables _char_;
   run;

答案 1 :(得分:0)

下拉示例是最简单的,当然也可能是最好的,如果这完全是请求。

但是,如果它略有不同 - 例如,您想要包含(或排除)与特定模式匹配的所有字符变量,您可以使用从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语句上,以获取与您的查询匹配的列的列表。