Site Banner
【01】SAS 初學者指南

【01】SAS 初學者指南


目錄


Data Step 與 Proc Step

SAS 中主要用來處理資料的方式分為 Data StepProc 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