在SAS中从proc freq创建输出

时间:2017-03-08 12:17:29

标签: sas

我在SAS Enterprise Guide 6.1中运行以下SAS代码,以获取表中所有变量的null / not null的摘要统计信息。这通过“结果”选项卡生成所需信息,该选项卡为每个结果创建一个单独的表,显示空/非零频率和百分比。

我想做的是将结果放入一个输出数据集中,所有变量和统计信息都在一个表中。

proc format;
    value $missfmt ' '='Missing' other='Not Missing';
    value missfmt   . ='Missing' other='Not Missing';
run;
proc freq data=mydatatable;
    format _CHAR_ $missfmt.;
    tables _CHAR_ / out=work.out1 missing missprint nocum;
    format _NUMERIC_ missfmt.;
    tables _NUMERIC_ / out=work.out2 missing missprint nocum;
run;

out1out2正在生成如下表:

FieldName | Count | Percent
Not Missing | Not Missing | Not Missing

但是每个只填充一个变量,并且不显示频率计数。

我正在尝试创建输出的表格为:

field | Missing | Not Missing | % Missing
FieldName1 | 100 | 100 | 50
FieldName2 | 3 | 97 | 3

1 个答案:

答案 0 :(得分:3)

tables语句输出选项仅适用于请求的 last 表。 _CHAR_解析为(所有字符变量),但它们是单个表,因此您只能获得最后一个请求。

你可以通过以下两种方式获得这种方法。使用PROC TABULATE,更容易处理变量列表;或使用ODS OUTPUT来获取proc freq输出。两种输出样式都可能需要一些工作才能完全符合您想要的结构。

ods output onewayfreqs=myfreqs;  *use `ODS TRACE` to find this name if you do not know it;
proc freq data=sashelp.class;
  tables _character_;
  tables _numeric_;
run;
ods output close;