從會分析資料開始 一直覺得統計分析並不是一件很困難的事
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;

trace on      

從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中自動累加檔案

 

文章標籤
創作者介紹

凡走過必留下痕跡~~~

rover1023 發表在 痞客邦 PIXNET 留言(0) 人氣()