将PROC MEANS输出到文件/ SAS数据表

时间:2017-05-19 14:27:15

标签: sas

在PROC FREQ程序中,我们可以用以下术语指定输出表:

    Proc Freq
        DATA=LIB.TABLE_IN
        ORDER=FREQ;

        TABLES FIELD / MISSING OUT = LIB.TABLE_OUT; /* outputs to a SAS data table */
    RUN;

我们怎么能用PROC MEANS程序做同样的事情?

proc means data=LIB.TABLE_IN n nmiss;

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

两种方式。 output语句将输出发送到数据集;你也可以使用ods output任何过程。

proc means data=sashelp.class;
  class sex;
  types sex;
  var height weight;
  output out=class_means mean= sum= /autoname;
run;

要使用ods output,您需要知道proc生成的表的名称。您可以使用ODS TRACE找出该表的名称。

ods trace on;
proc means data=sashelp.class;
  class sex;
  types sex;
  var height weight;
run;
ods trace off;

你会发现它被称为summary。所以你像这样添加ods output语句:

ods output summary=class_means_ods;
proc means data=sashelp.class;
  class sex;
  types sex;
  var height weight;
  output out=class_means mean= sum= /autoname;
run;
ods output close;

最后,proc means在我认为9.3(或可能是9.22)stackodsoutput之后有一个选项,它将结果数据集的格式更改为更多表格,这可能对您有所帮助。

ods output summary=class_means_ods;
proc means data=sashelp.class stackodsoutput;
  class sex;
  types sex;
  var height weight;
  output out=class_means mean= sum= /autoname;
run;
ods output close;

答案 1 :(得分:1)

使用proc means生成列表区域输出的几乎所有内容也可以通过proc summary作为输出数据集生成,尽管有时语法略有不同,输出格式也不同。例如。这会产生与您的示例相同的信息,但是在宽表中而不是长表:

proc summary data=sashelp.class;
  var _numeric_;
  output out = my_summary n= nmiss= /autoname;
run;

答案 2 :(得分:0)

如果仅需要N,MIN,MAX,MEAN和STD,则下面的简单行可以生成一个漂亮的表,此处称为“ sumTab”。但是,如果添加NMISS等,它将采用多种格式。

    proc means data = X ; 
        var _numeric_;
        output out = sumTab ; 
    run;