從會分析資料開始 一直覺得統計分析並不是一件很困難的事
SAS code寫一寫,按個「小人」很快就會有結果出來
但最麻煩也最花時間的,往往是將SAS OUTPUT整理成表格
最近發現SAS的ODS (Output Delivery System)在這方面是很有力的好幫手
能更方便、靈活地使用各個過程的統計分析結果
ODS能將統計分析結果:
1、輸出成HTML, PDF, RTF(Rich Text Format, 可用Microsoft Word讀取)等格式
2、選擇性的輸出部份統計結果
3、儲存為SAS資料檔
SAS預設的輸出為「LISTING」會將統計結果顯示在OUTPUT視窗中
通常 在要求SAS把結果列印到所選擇的格式時
可以先關閉預設的輸出方式,最後再重新開啟預設的格式
而開啟所選擇的格式 指令為"ODS output-format;" 接著再關閉此功能
當然,ODS也很貼心的能夠讓我們指定要將這些格式儲存到哪裡 如:
ODS HTML FILE="路徑\檔名.HTML";
ODS PDF FILE="路徑\檔名.PDF";
ODS RTF FILE="路徑\檔名.RTF";
因此,程式的編碼會先關閉預設的listing,接著開啟想要的output格式
然後執行程序,最後是關閉所選擇的output和重新開啟預設的listing
若要求SAS將proc univariate結果輸出到桌面存成PDF檔,檔名設定為result,其指令為:
ods listing close;
ods pdf file="C:Desktop\result.pdf";
proc univariate data=a;
var kidwt;
run;
ods pdf close;
ods listing;
在選擇列印部份統計結果或儲存為SAS資料檔之前 須先知道它們的ODS代名
這些代名可經由「ODS TRACE ON;」指令輸出到LOG視窗中,如:
ods trace on;
proc univariate data=a;
var kidwt;
run;
ods trace off;
從LOG視窗可知proc univariate的分析結果由五個部份組成
每一部份的ODS代名即名稱後所寫的文字
資料經過統計分析後,可能只需要保留某些分析的結果
可使用「ODS (type) SELECT」(或"ODS EXCLUDE")指令來選擇(刪除)列印所需的分析結果
以上面的例子為範本,若僅要求列印分析結果中的動差與分位數,指令為:
ods listing select moments quantiles;
proc univariate data=a;
var kidwt;
run;
亦可使用「ODS OUTPUT」指令將分析結果的任何部份輸出為SAS資料檔
若想將結果中的動差與分位數輸出到資料檔內,指令為:
ods output moments=x quantiles=xx;
proc univariate data=a;
var kidwt;
run;
ods output close;
須注意的是 執行ODS指令時,不可同時界定統計程序中的NOPRINT選項
當要處理的變項很多時,可搭配MACRO使用
進一步利用DATA STEP將資料檔合併並整理成想要的內容,最後再匯出
可避免需先人工找到想要的統計數值
再key in到word或excel這個重複又可能看錯、key錯的情形
使得閱讀及整理表格時,變得更省時、省力且更有系統
延伸閱讀:
【SAS】資料歸戶
【SAS】使用macro重複執行特定程序
【SAS】在macro中自動累加檔案
【SAS】將檔案內容設為巨集變數
留言列表