Leo Yeh's Blog

SAS 基礎程式 (13)

教學目標

初步了解 SAS 基礎程式的自訂格式基本概念。

重點概念

(請注意以下內容皆為課程心得筆記,若有不清楚的部份,建議上官方主辦的 SAS Programming 2 課程,謝謝。)

所謂格式是指輸出變數所呈現的樣式,我們除了用系統內建的格式之外,像是 $w. 、yymmdd10.、comma10.2、…等預設格式,還可以透過 PROC FORMAT 敘述自訂格式,其中格式長度主要會以標籤中最長的文字為主。

自訂格式敘述

1
2
3
PROC FORMAT;
VALUE 格式名稱 開始 標籤;
RUN;

接著如何從資料集更新為永久格式,首先必須有三個變數 Start、Label 和 FmtName ,分別代表開始、標籤和格式名稱,通常針對資料集會搭配 RETAIN 和 RENAME 敘述以利提升處理效率。當我們產生具備 Start 、 Label 和 FmtName 三個變數的資料集之後,就可以透過下述 SAS 程式將資料集更新為永久格式。

永久格式敘述

1
2
PROC FORMAT CNTLIN=資料集;
RUN;

再來我們會再透過 PROC FORMAT 敘述查看永久格式的內容是否正確,請參考下述 SAS 程式。

查看格式資訊敘述

1
2
3
PROC FORMAT LIBRARY=WORK.FORMATS FMTLIB ;
SELECT 資料集;
RUN;

以及我們還可透過 PROC CATALOG 敘述查看資料集的格式資訊。

1
2
3
PROC CATALOG CAT=函式庫.資料集;
CONTENTS;
QUIT;

此外在 SAS 中可以有巢狀格式,請注意格式會有相依關係,其中長度預設為 40。

可是如何開始使用格式,SAS 主要會先找是否為預設格式,接著找 WORK.FORMATS ,再來找LIBRARY.FORMATS ,若還找不到就不找了,所以若直接使用會發生錯誤。為了解決此問題,首先我們會透過 OPTIONS NOFMTERR; 敘述告訴 SAS 若不是預設格式或在 WORK.FORMATS 中則不要顯示錯誤,正常執行,預設為 OPTIONS FMTERR 。最後我們要透過 OPTIONS FMTSEARCH=(資料館1, 資料館2); 敘述告訴 SAS 可以從哪裡找自訂格式。

最後我們要如何管理格式,主要會透過下述 SAS 程式,當匯出格式為 SAS 資料集就能夠進行格式更新為永久格式,請注意若不指定就存在 WORK.FORMATS ,直到工作結束。

匯出格式

1
2
3
4
PROC FORMAT LIBRARY=LIBREF.CATALOG 
CNTLOUT=資料集;
SELECT 格式名稱;
RUN;

總結在商業分析中我們可以透過自訂格式的方式針對資料有不同的解釋,同時在不影響資料的情況下,直接輸出呈現至報表中,因此透過自訂格式將能夠讓我們呈現出各式各樣不同類型的報表欄位呈現方式,請注意當 FORMAT 敘述用在 DATA STEP 中時則是建立清單報表時指定格式,僅有在 PROC STEP 中當成程序時才是建立和應用自訂格式。

相關資源

⬅️ Go back