SAS 簡單快速複習
Outline
•   三種資料輸入法
•   PROC MEANS
•   強迫式&條件式執行
•   PROC UNIVARIATE
•   PROC FREQ
•   GOTO label
•   PROC SORT
•   PROC SUMMARY
三種資料輸入法
輸入資料語法
DATA XXX;        建構一個SAS資料檔
INPUT A B C D;    輸入變項的名稱
CARDS;
放數據進來            數據輸入區
;

PROC PRINT;
                 要執行的工作程式碼
RUN;
SAS資料檔的檔名
• DATA XXX
1. 檔名必須以英文字母開始
2. 檔名不能有空白
3. 每個資料檔給予不同名稱
INPUT變項類型
1. 文字型:NAME, SEX
   需用 $ 來宣告變項為文字變項。



2. 數值型:ID, AGE, INCOME,RT…
• DATA步驟-用來建立或修改SAS資料

• PROC步驟-處理SAS資料檔

• SAS撰寫特性-
  (1) 以 ; 做結尾
  (2) 英文大小寫皆可使用
  (3) SAS指令可在同一列, 也可橫跨數行
  (4) /* XXX*/ 註解
1. 欄位讀取法(column mode)



            指定資料起迄位置
Column Input的特性
• Input 是以既定的行數位置來讀取,所以資
  料需在指定的行上。

• 文字變項可以包含空格。

• 遺漏值可用 . 或是空格表示。
2. 簡列讀取法(List Mode)
List Input的特性
• 資料之間要有空格。

• 文字變項不可含空格。

• 遺漏值必須用 . 表示,不可以空格。

• 最常使用此輸入法
3. 格式讀取法(Formatted mode)




            指定開始字元位置(@)
            與每筆資料的長度(0.)
Formatted Input的特性
• Input 是以指定的位置及長度來讀取,所以
  資料需在指定的位置上,並對應正確長度。

• 文字變項可以包含空格。

• 遺漏值可用 . 或是空格表示。
• 缺點:
    – 若數值超過該變項指定位元數,會被SAS排除。
         Name   Age   Rank
    –例   Tom    18     1
         Mary   20     2




正
確

錯
誤
摘要
• 欄位讀取法
 – 需計算行數,遺漏值可以空格或 . 表示


• 簡列讀取法
 – 最簡單常用,遺漏值只能用 . 表示


• 格式讀取法
 – 需計算位元數,遺漏值可以空格或 . 表示
PROC MEANS
功用
• 可用來計算基本的描述統計值

• 可針對配對資料進行統計檢定
常用格式
PROC MEANS options;
  VAR variables;
  BY variables;
  OUTPUT OUT=輸出檔名 輸出的統計量;
強迫式&條件式執行
強迫式執行
• 變項=被指派的值或函數

• 例如:
 – 常數的指派:N=20;
 – 文字的指派:sex=’female’;
 – 產生新變項:income=revenue-expenses;
條件式執行
• if……then……;else……;
  – if score < 60 then grade = ‘fail’;
   else grade = ‘pass’;


• if……then do;……end;
  – if major = ‘psycho’ then do;
       passing = 70;
    end;
PROC UNIVARIATE
功用
• 可計算指定變數的基本敘述性統計量

 – 集中趨勢指標(眾數、中數、平均數)

 – 離散趨勢指標(全距、四分位差、變異數、標準差)

 – 偏度、峰度
常用格式
PROC UNIVARIATE options;
  VAR variables;
  BY variables;
  OUTPUT OUT=輸出檔名 輸出的統計量;
PROC UNIVARIATE
– DATA= 指定對哪個資料檔分析

– NOPRINT= 不產生報表

– PLOT= 莖葉圖 / 盒圖 / 常態機率圖

– FREQ= 次數分配表 (次數 / 百分比 / 累積百分比)

– NORMAL= 檢定資料是否為常態分配
OUTPUT 輸出統計量
  指令           說明        指令          說明
   N         有效觀察體數量     Q3       第三四分位數
  NMISS     遺失的觀察體個數   MEDIAN       中位數
  NOBS       觀察體總數       Q1       第一四分位數
  MEAN        平均數      QRANGE       Q3 - Q1
  SUM          總和         P1      第 1 百分位數
   STD        標準差         P5      第 5 百分位數
  VAR         變異數        P10      第 10 百分位數
SKEWENESS      偏度        P90      第 90 百分位數
KURTOSIS       峰度        P95      第 95 百分位數
 SUMWT       加權值總和       P99      第 99 百分位數
  MAX         最大值       MODE         眾數
  MIN         最小值      SIGNRANK   等級符號檢定
 RANGE         全距      NORMAL     常態分配檢定
PROC FREQ
功用

• 用來建立指定變數的次數分配表或列聯表

• 亦可以算出卡方檢定的統計量
常用格式
PROC FREQ options;
  TABLES requests / options ;
  BY variables;
PROC FREQ options
• DATA= SAS dataset
  – 指定要分析的資料集,若不指定則取最新建立的

• ORDER指令
 ORDER=freq         表格中的變數值按次數遞減輸出

 ORDER=data         表格中的變數值以資料輸入順序輸出

 ORDER=internal     表格中的變數值以系統預設順序輸出

 ORDER=formatted   表格中的變數值以FORMAT敘述句定義的順序輸出
TABLES 敘述句
• 用以建立次數分配表&列聯表的描述

• 格式   TABLES requests / options

• requests 是由欲用來建立表格的變數名稱構成
    敘述句                  說明
  TABLES a;    產生變數 a 的次數分配表
  TABLES a c; 分別產生變數 a 和 c 的次數分配表
  TABLES a--e; 產生變數 a 到 e 的次數分配表
兩個以上變數的交叉表
   敘述句                    說明

TABLES a*b;       產生變數 a 和 b 的交叉分析表

                  產生變數 a 和 b 的交叉分析表

TABLES a*(b c);   產生變數 a 和 c 的交叉分析表

                  ( 和 a*b a*c 是同樣的意義 )


TABLES a*b*c;      產生三層次的交叉分析表
TABLES 敘述句
• options
  – 一般選擇項

  – 其他表資訊選擇項

  – 禁止印出選擇項
TABLES options
• 一般選擇項
 – MISSING
 – 視遺失值為非缺失值,包含在分析中

 – LIST
 – 指定二維以上表格不以列聯表方式輸出

 – OUT=dataset
 – 產生一個輸出資料集,包含變數類別&次數分配
DATA d1;
  INPUT a b sex $ @@;
CARDS;
11F31F
22M11F
.2M.1M
22M22.
;
RUN;
PROC FREQ;
  TABLES a b sex;
  TITLE '無MISSING選項的結果';
RUN;
PROC FREQ;
  TABLES a b sex/missing;
  TITLE '有MISSING選項的結果';
RUN;
DATA d1;
  INPUT a b sex $ @@;
CARDS;
11F31F
22M11F
.2M.1M
22M22.
;
RUN;
PROC FREQ DATA=d1;
  TABLES a*b sex;
  TITLE '未使用LIST選項指令';
RUN;
PROC FREQ DATA=d1;
  TABLES a*b sex / list;
  TITLE '使用LIST選項指令';
RUN;
DATA d1;
  INPUT a b sex $ @@;
CARDS;
11F31F
22M11F
.2M.1M
22M22.
;
RUN;
PROC FREQ;
  TABLES a*b sex/list;
  TITLE '未使用ORDER指令時';
RUN;
PROC FREQ order=freq;
  TABLES a*b sex/list;
  TITLE '使用ORDER=FREQ指令時';
RUN;
TABLES options
• 其他表選擇項
 – EXPECTED
 – 指定列印每個細格中的期望次數

 – DEVIATION
 – 指定列印每個細格中的次數&期望次數的離差

 – CUMCOL
 – 指定列印每個細格的累積百分比
TABLES options
• 其他表選擇項
 – MISSPRINT
 – 列印遺失值的次數,但不包含在其他統計量計算

 – SPARSE
 – 指定列印TABLES 敘述句中所有的變數組合

 – CUMCOL
 – 指定列印每個細格的累積百分比
TABLES options
• 禁止印出選擇項
 – NOFREQ / NOPERCENT
 – 不列印列聯表中細格的 次數 / 百分比

 – NOROW / NOCOL
 – 不列印列聯表中細格的 列 / 行 百分比

 – NOPRINT
 – 不列印任何表格,但列印出其他選項的統計量
DATA freq;
  INPUT x $ y $ @@;
CARDS;
ABBA.BAABAAABAAAABAABAAB
;
RUN;

PROC FREQ DATA=freq;
  TITLE '無TABLE敘述句';
RUN;

PROC FREQ DATA=freq;
  TABLES x*y / LIST MISSPRINT;
  TITLE '具MISSPRINT選項的二因子次數分配表';

PROC FREQ DATA=freq;
  TABLES x*y / LIST SPARSE;
  TITLE ‘具SPARSE選項的二因子次數分配表';
RUN;
GOTO label
Result
Return
Result
PROC SORT
功用
• 根據指定的變數將資料依序排列

• 排序後才能在其他 PROC 使用 BY 敘述句
常用格式
PROC SORT options;
 BY variables;

PROC SORT options :
data=要排序的資料檔
out=排序後的新資料名稱
Result
PROC SUMMARY
功用
• 幾乎等於 PROC MEANS

• 與 PROC MEANS的差異
 – PROC MEANS 會自動輸出結果
 – 無法算信賴區間
 – 無法做 t 檢定
END

11/01 SAS 快速複習