2017-05-19 89 views
0

在PROC FREQ過程,我們可以在以下方面指定輸出表:輸出PROC意味着將文件/ SAS數據表

Proc Freq 
     DATA=LIB.TABLE_IN 
     ORDER=FREQ; 

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

我們如何做同樣的PROC MEANS程序?

​​3210

感謝您的幫助!

+0

只是出於好奇,你在查詢文檔之前偷看了嗎? – Joe

回答

1

兩種方式。語句output將輸出發送到數據集;你可以像任何proc一樣使用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; 
+0

謝謝。我選擇了第一個選項。 – Alex

1

幾乎任何你可以用proc means做,在列表區域產生的輸出也可以通過proc summary生產作爲輸出數據集,雖然有時稍微不同的語法和不同的輸出格式。例如。這產生了與你的例子相同的信息,但在一個寬表中,而不是在一個長表中:

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

我意識到你也可以用proc來實現它......謝謝! – Alex

+0

'summary'只是v8 + SAS中不同默認值的'means'的克隆。 – Joe

+0

@Joe奇怪的是,這是我遇到的幾個功能之一,似乎並沒有在proc摘要中精確複製。 – user667489