【01】SAS 初學者指南
目錄
Data Step 與 Proc Step
SAS 中主要用來處理資料的方式分為 Data Step 和 Proc Step。
Data Step
- 用於建立、修改和轉換資料
- 包括建立單一或多個資料集
- 修改變數格式、標籤與觀察值
- 進行資料計算或重新分組
Proc Step
- 使用各種 Procedure 進行資料分析和圖表產出
- 也可執行部分資料處理功能
- 例如:
Proc Transpose可進行資料方向轉換
- 例如:
Data Step 程式碼
Data test;
* --- Multiple Statements ---;
run;
說明:
Data:開始 Data Step 的關鍵字test:要建立的資料集名稱run:執行程式區塊 (非必要但常用)- 分號
;:每個 Statement 必須以分號結束
Data Step 執行階段 (Phase)
執行時分為两大階段:
Compile Phase (編譯階段)
- 檢查語法錯誤 (Syntax Error)
- 建立三個區塊:
- Input Buffer
- Program Data Vector (PDV)
- Descriptor Information (Metadata)
Execution Phase (執行階段)
- 讀取資料,依證是否為 SAS 資料集 或非 SAS 格式
- 資料載入 Input Buffer 和 PDV
- SAS 自動建立兩個變數:
_N_,_ERROR_ - 將資料從 PDV 寫入新資料集
- 遇到
run;或新 Step 前置後寫入 - 不斷重複直到無資料可讀取
圖解

圖片來源:How the DATA Step Works: A Basic Introduction
實例程式
Data test;
input No Gender $ Score;
cards;
1 F 66
2 M 91
3 F 28
4 F 59
5 M 99
;
run;
以上程式使用3個變數、讀取 cards 下方5筆資料,建立名為 test 的 SAS 資料集。

- 第1筆:先建立 Input Buffer
- 按變數屬性建立 PDV
- 從 cards 讀入第1筆資料

- 設定 PDV 變數為遺漏值
_N_等於 1,_ERROR_等於 0

- 將 Input Buffer 資料寫入 PDV
- 資料寫入後,第1筆入新資料集

- 繼續讀取第2筆
_N_+1,_ERROR_重置為 0

- 第2筆資料寫入 Input Buffer

- 寫入 PDV 後,入新資料集
- 重複直到無資料可讀取,關閉 Data Step