對於SAS有個簡單的基本認識後,我們即可往下個目標邁進。SAS常被研究者用來做資料處理與統計分析,因此依照階段我們可以區分為DATA step(資料處理)與PROC step(執行統計運算),為能使初學者能夠輕易上手,本篇文章將利用範例針對資料處理與分析介紹幾個常用的語法。

 

 

一、先思考未來

 

為了增加Output的可讀性,首先我們需要對SAS做一些設定,選項有:

 

l          CENTER/NOCENTER:結果是否置中

l          DATE/NODATE:是否要呈現日期

l          PAGENO = n:每次頁碼都從第n頁開始

l          NONUMBER:不顯示頁碼

l          LINESIZE/LS = n:一行的字元數

l          PAGESIZE/PS = n:設定每頁的行數

l          FIRSTOBS = n:從第幾筆資料開始抓

l           OBS = n Max:最多抓到第幾筆

 

Ex:

 

OPTIONS CENTER DATE LS=80 PAGENO=1 NODATE;

 

 

二、雞同鴨講

 

撰寫語法,最怕就是軟體不知道你想要表達什麼!在SAS中,一段「敘述句」為指令的最小單位,它可能是用來協助資料做處理(跟在DATA step之後),或可能協助資料進行分析(跟在PROC step之後),亦可以在程式中單獨作業(如範例中的CARDS)。範例中的『INPUT x1 x2 x3;』則是一段「敘述句」,而敘述句的規則有以下幾點:

 

(1).以關鍵字開始,以分號結束,並以RUN做程式的進行

 

(2).敘述句可開始或結束於任何一個欄位,並可用空格或空白增加程式的可讀性

 

(3).可利用『************我是註解*************;

or/*我是註解*/』做註解

 

(4).變數名稱不得超過32字元、第一個字元須是文字字元或底線(_)、名稱中間不可有空白或特殊符號(%,#,…

 

(5).變數可分為文字變數與數值變數

 

 

 

 

************我是註解*************;

1. DATA CASE ;

2.   INPUT x1 x2 x3; /*我是註解*/

3.   CARDS;

4.     2 11 8

5.     3 10 6

6.     2 6 2

7. ;

PROC PRINT;

TITLE '資料集' ;

RUN;

 

 

 

三、資料的誕生

 

 

資料可分為內部資料(經由SAS建檔的資料,可由SAS直接讀取,如*.sas7bdat)、將原始資料放到程式裡(用CARDSCARDS4DATALINES讀取:一般範例最常見)與外部資料(其他非SAS建檔的資料,如*.txt*.datExcel檔),又以文字檔最常使用(佔用記憶體小),因此本段只針對外部的文字檔作讀取資料的介紹。

 

 

(1)DATA CASE;』指建立一個名叫「CASE」的資料集,資料集的名稱可以自取,只要使用者能夠區別就行。

 

 

(2)INFILE 'C:\D001.txt';』利用INFILE+路徑讀入資料。

INFILE的選擇項:【missover】宣告資料含有遺失值

 

 

(3)INPUT ID 1-4 Gend 5 age 6-7 Mar 8 Height 9-14 ;』告訴SAS所輸入的原始資料之變數名稱及格式,由以上敘述句可知資料中的1-4行為ID、第5行為性別、第6-7行為年齡、第8行為婚姻狀況、第9-14行為身高

 

 

(4)以上敘述所輸入原始資料之變數名稱及格式的方法稱為欄位輸入法,另外還有列名輸入法(適用於超簡單格式)、格式輸入法(適用於複雜的格式),雖然欄位輸入法在變數多的時候會變得較複雜,但對於初學者來說,利用欄位輸入法讀資料可降低錯誤率的發生。

 

 

(5)利用【Title】使輸出報表含有標題增加易讀性

 

 

(6)文字檔鍵入時,可用「.」表示missing,也可用「」空白當作missing

 

 

(7)利用【MISSING】宣告遺漏值

 

INPUT的選擇項:

 

$】宣告此變數為文字變數,如範例中的ID為文字變數

.1】宣告此變數的小數位數為何,ex:若有一筆資料為1773,則SAS會判斷為177.3,若一筆資料為172.39SAS仍會正確讀取172.39

@】宣告一列一列讀取

@@】宣告連續讀取

 

 

 

 

DATA CASE;

 INFILE 'C:\D001.txt' missover;

 INPUT ID $ 1-4 Gend 5 age 6-7 Mar 8 Height 9-14 .1;

 MISSING 999;

PROC PRINT;

TITLE '資料集' ;

RUN;

 

 

 

 

 

四、代號內心身處的秘密(變數註解與數值註解)

 

 

我們都知道在keyin的時候,常以代號替代原本的變數名稱與數值名稱,此時如果未使用變數註解與數值註解,將會大大降低Output的可讀性。

 

(1)先利用【PROC FORMAT ;】定義數值名稱的格式,【VALUE sexfmt 1='' 2='' ;

   其實sexfmt是可變更的,但為了確保不會錯亂,通常以變數名稱+fmt命名

 

(2)接著利用INPUT讀進變數名稱

 

(3)接下來利用【LABEL sex ='性別'】定義變數註解。

 

(4)接著利用【FORMAT sex sexfmt.】用以連接變數與數值格式,要小心的是每一個fmt後都要加一個『.』。

 

 

 

 

 

PROC FORMAT ;

  VALUE sexfmt 1='' 2='' ;

  VALUE agefmt 1='20歲以下' 2='21-30' 3='31-40' 4='41歲以上' ;

  VALUE edufmt 1='國中以下' 2='高中職' 3='大學' 4='研究所以上' ;

 

DATA DEMO ;

INPUT sex 1 age 2 edu 3  ;

 

LABEL sex ='性別' /*變數註解*/

       age ='年齡'

       edu ='教育程度' ;

 

FORMAT sex sexfmt. age agefmt. edu edufmt.;  /*數值註解*/

 

CARDS ;

114

213

122

231

144

243;

 

PROC PRINT;

RUN;

 

-------------------------------------------------------------------------------------------------------------------待續

arrow
arrow
    全站熱搜

    晨晰部落格新站 發表在 痞客邦 留言(1) 人氣()