-
1
DATA PROCESSING 2008
CLASS 1 SAS 軟體介紹
1-1 SAS 軟體
1943 年出生於北卡羅萊那州,Jim Goodnight 在 28 歲那年取得北卡州立大學(NCSU)統計學博士,1972 年到 1976 年間擔任該校助理教授,在此期間他發展了一套軟體系統,運用統計方法分析農業資料。1976 年 Jim Goodnight 瞭解到他的軟體系統不僅能運用在學校領域,也非常適合用於企業、產業和政府部門輔助擬定決策方向,於是 Jim Goodnight 便在 1997 年與幾位志同道合的教授共同創立 SAS Institute,並發表可應用於 IBM 主機上的第一套軟體。自此,SAS 以每年 15% 的速度穩健成長,2002 年營業額更達 11.8億美元,成為全球最大私人軟體公司,同時也為商業智慧解決方案的領導廠商。過去
30 年來,SAS 不斷致力於協助客戶將資料萃取成無價的商業智慧,強化決策能力以因應商業挑戰並於市場中勝出。SAS 的專注與努力讓我們成為市場上唯一能夠提供從資料萃取、轉換與載入,到資料倉儲系統建置、商業智慧分析和預測模式建立,完整商業智
慧解決方案的廠商。
1-2 SAS 的啟動
在個人電腦上,從【開始】工具列中,找到 SAS 圖像 ,以滑鼠左鍵點選即可啟動 SAS 程式。
1-3 SAS 的環境介紹
功能列(下拉式選單) ˇ 快捷圖示列
Log 視窗 Output 視窗
Results 視窗 或 Explorer 視窗 Program Editor 視窗 Results Explorer Output Log Editor
1-3-1 SAS 的功能列
1-3-2 SAS 的快捷圖示
-
2
DATA PROCESSING 2008
1-3-3 SAS 的指令欄(Command Line)
1-3-4 Editor 視窗的介紹 為撰寫 SAS 程式的地方,將程式碼存成檔案時,副檔名為.sas,執行程式時,則將程式碼【反白】,再按下【執行】快捷圖示。
1-3-5 Log 視窗的介紹 為 SAS 程式執行過程的紀錄。紀錄程式執行了哪些敘述;產生哪幾個資料集;資料及包含多少變數和資料筆數。如果執行錯誤,在紀錄檔中以紅色表示,以確保結果的
正確性。如欲將 Log 內容存成檔案時,其副檔名為.log。
1-3-6 Output 視窗的介紹 呈現 SAS 程式執行的結果報表。如果程式碼沒有任何輸出或其他引導指令,則此視窗不會有任何內容。如欲將其視窗內容存成檔案時,其副檔名為.lst。
編輯視窗
執行
Log 視窗
-
3
DATA PROCESSING 2008
1-3-7 Results 視窗的介紹 呈現 Output 視窗內容的索引(Index)。
1-3-8 Explorer 視窗的介紹 可瀏覽 SAS 內部建檔情形,包括暫存檔案目錄:Work,在 SAS 系統結束後,該檔案即消失。
Output 視窗
滑鼠雙擊索引目錄,
即可立即在 Output 視窗呈現所欲觀察的結
果報表
-
4
DATA PROCESSING 2008
1-4 參考書籍
1. Applied Statistics and the SAS Programming Language (ISBN: 0131465325) Ronald P. Cody, Jeffrey K. Smith. Prentice Hall. 5 edition. 2005.
2. Cody's Data Cleaning Techniques Using SAS Software (ISBN: 1580256007) Ronald P. Cody. SAS Publishing. 1999.
3. The Little SAS Book: A Primer (Third Edition) (ISBN: 1590473337) Lora D. Delwiche, Susan J. Slaughter. SAS Publishing. 3rd edition. 2003.
4. SAS 1-2-3 (ISBN:9574997553) 彭昭英、唐麗英, 儒林, 第五版, 2005
5. SAS 與資料處理 (ISBN:9574997405) 翁淑緣, 儒林, 第四版, 2005
6. SAS 與統計分析 (ISBN:9574997049) 彭昭英, 儒林, 初版, 2004
1-5 參考網頁
1. Business Intelligence and Analytics Software – SAS http://www.sas.com/index.html
2. SAS Publishing http://support.sas.com/publishing/index.html http://support.sas.com/documentation/onlinedoc/code.samples.html
3. SAS OnlineDoc 9.1.3 http://support.sas.com/onlinedoc/913/docMainpage.jsp
4. UCLA – Statistical Computing Resources http://www.ats.ucla.edu/stat/
-
5
DATA PROCESSING 2008
CLASS 2 SAS 基本程式概念
2-1 SAS 語言(Statement)
SAS 是以第三階語言 C 寫成的語言,為第四階語言,第三階與第四階不同處在於需要愈高階的語言,愈不需要撰寫繁複的指令來完成工作,但也因為愈簡單,使得愈高
階的語言讓使用者愈感到抽象、愈不容易理解。 針對變數(weight)的基本描述,如求平均數,變數(weight)的內容為(30, 40, 50,
45, 60) (1)WEIGHTMEAN=(30+40+50+45+60)/5; (2)PROC MEANS; VAR weight; RUN; 顯然第(2)種寫法,令人感到較抽象。
2-2 SAS 程式的兩大步驟
SAS 的程式結構主要分兩大步驟,資料步驟(DATA step)與程式步驟(PROC step, or Procedure step)。 2-2-1 SAS 資料步驟簡介(DATA step) 資料步驟主要處理資料的建立,包括資料檔的建立(SAS 資料檔)、資料的計算(四則運算)、資料的合併等等。資料步驟的語法較低階,故較容易理解。 資料檔的建立—姓名、身高及體重的建立 列 程式語法 語法說明
1
2
3
4
5
6
7
8
9
DATA new;
INPUT name $ height weight;
bmi=weight/(height/100)**2;
DATALINES;
John 180 80
Alice 160 45
Mary 165 60
;
RUN;
DATA 資料檔名稱;
INPUT 變數 1 變數 2 變數 3;
變數 4=….…..;
DATALINES;
資料 1 資料 2 資料 3 /*第 1 筆資料*/
資料 1 資料 2 資料 3 /*第 2 筆資料*/
資料 1 資料 2 資料 3 /*第 3 筆資料*/
;
RUN;
本程式中,name, height, weight 皆為變數名稱,可自由命名,本資料檔共有三筆資料,第一筆資料為 John 的身高和體重。列 3 為一種計算語法,變數 4 為新建立的變數名稱,等號(=)右邊為計算式。
-
6
DATA PROCESSING 2008
2-2-2 SAS 程序步驟簡介(PROC step) 程序步驟主要利用已發展出來的程序(Procedure),類似 Excel 中的函數或資料分析功能,使用者只需帶入適當參數,即可執行並輸出該有的結果報表。 每一種程序皆可處理其特定的工作,如計算平均值、最小值、最大值,使用者只要了解該程序可處理的工作內容,即可混合搭配使用,代入適當的參數,SAS 系統會自動處理我們想要執行的內容,輸出我們要的結果,輸出的結果往往比我們需要的還多。 Excel 的處理
沿用上例,改用撰寫 SAS 程序步驟來得到相同結果 列 程式語法 語法說明
1
2
3
4
5
6
7
8
9
10
11
12
DATA new;
INPUT name $ height weight;
DATALINES;
John 180 80
Alice 160 45
Mary 165 60
;
RUN;
PROC MEANS DATA=new;
VAR height weight;
RUN;
DATA 資料檔名稱;
INPUT 變數 1 變數 2 變數 3;
DATALINES;
資料 1 資料 2 資料 3 /*第 1 筆資料*/
資料 1 資料 2 資料 3 /*第 2 筆資料*/
資料 1 資料 2 資料 3 /*第 3 筆資料*/
;
RUN;
PROC 程序名稱 DATA=資料檔名稱;
VAR 變數 1 變數 2;
RUN;
SAS 提供許多不同的模組化程序功能,在 SAS 中稱為不同的程序(Procedure, PROC),常用的 PROC,如 MEANS, PRINT,…等等。
-
7
DATA PROCESSING 2008
2-2-3 DATA step 與 PROC step 的差異 DATA steps PROC steps begin with DATA statements read and modify data create a SAS data set
begin with PROC statements perform specific analysis or function produce results or report
2-3 SAS 語言的基本表達方式
用寫的?還是用說的? 1. 字母不分大小寫 2. 每一敘述(指令,statement)以分號【;】作結尾 3. 字與字之間可有多個空白 4. 每一列中可有多個敘述 5. 一個敘述可分成多列撰寫 6. 空白列的數目沒有限制 7. 建議以易讀懂和修改為原則
2-4 如何使用 SAS OnlineDoc
(1) 進入網頁
-
8
DATA PROCESSING 2008
(2) 進入第九版線上使用手冊網站
(3) 顯示第九版索引/查詢頁面
-
9
DATA PROCESSING 2008
(4) 找到 Base SAS 所有的 Procedure,選擇 PROC MEANS Procedure 為講解範例
(5) PROC MEANS Procedure 語法(Syntax)架構 PROC MEANS ; BY variable-1 ; CLASS variable(s) ; FREQ variable; ID variable(s); OUTPUT ; TYPES request(s); VAR variable(s) < / WEIGHT=weight-variable>; WAYS list; WEIGHT variable;
-
10
DATA PROCESSING 2008
(6) PROC SUMMARY Procedure 語法(Syntax)架構 PROC SUMMARY ; BY variable-1 ; CLASS variable(s) ; FREQ variable; ID variable(s); OUTPUT ; TYPES request(s); VAR variable(s); WAYS list; WEIGHT variable;
-
11
DATA PROCESSING 2008
CLASS 3 資料讀取
3-1 Input Statement INPUT 變數名稱 1 變數名稱 2 變數名稱 3 …;
3-1-1 自由格式輸入 INPUT id name $ height weight; 3-1-2 固定格式輸入 INPUT id 1-2 name $ 4-13 height 15-16 weight 18-20; 3-1-3 固定格式+指定變數輸入格式(informat) INPUT id 1-2 @3 name $5. height 8-10 @11 weight 4.2;
文字型 $w. $: 文字 w.:文字位元寬度(一定要加點),例 $20. 數字型 w.d w: 位元寬度 d: 小數位數,例 4.0
3-2 INFILE Statement
INFILE 檔案位置 DLM=’分隔符號’ Missover DSD FIRSTOBS LRECL
INFILE所處理的檔案為非SAS資料集,包含一般外部文字檔的讀入或直接由Editor視窗的讀入,以及一些讀檔的設定。 3-2-1 檔案位置 若為一般外部文字檔(副檔名為.txt 或是.csv),檔案位置需要用引號(單引號或雙引號皆可)括住。
INFILE 'C:\test.txt' 或 INFILE 'C:\test.csv'
3-2-2 DLM 為一種讀檔設定的語法,用以指定檔案中資料格開的方式。系統中預設資料格開的方式為”空格”,但若資料係以其他方式隔開,例如逗號(,)隔開,則可藉由 DLM 語法來設定。
INFILE 'C:\test.csv' DLM=’,’;
-
12
DATA PROCESSING 2008
3-2-3 MISSOVER 為一種讀檔設定的語法,用以指定檔案中某筆資料不完整時(特別指由某變數以後,資料全部為缺失值)的處理方式。
DATA b5; INFILE DATALINES DLM=',' MISSOVER; INPUT id name $ height weight; DATALINES; 01,John 02,Alice,160,45.45 03,Mary,165,60.46 ; RUN;
3-2-4 DSD 為一種讀檔設定的語法,用以指定檔案中某筆資料不完整時(特別指在中間的變數有缺失值的情形,一般配合 DLM=’,’,若中間的變數有缺失值,則以, ,表示)的處理方式。
DATA b6; INFILE DATALINES DLM=',' MISSOVER DSD; INPUT id name $ height weight; DATALINES; 01,John,180,80.23 02, , ,45.45 03,Mary,165,60.46 ; RUN;
3-2-5 FIRSTOBS 為一種讀檔設定的語法。可用以設定第一筆資料由哪一列開始。 例如:csv 檔通常第一列為變數名稱,資料由第二列開始
INFILE 'C:\test.csv' DLM=’,’ MISSOVER FIRSTOBS=2; 3-2-6 LRECL 為一種讀檔設定的語法。可以用以設定每筆資料可允許的長度。 例如:每筆資料只允許佔 300 位元
INFILE 'C:\test.csv' DLM=’,’ MISSOVER FIRSTOBS=2 LRECL=300;
-
13
DATA PROCESSING 2008
3-2-7 總結範例 DATA c1; INFILE 'C:\Documents and Settings\USER\Desktop\輔大\test.csv' DLM= ',' MISSOVER DSD LRECL=32767 FIRSTOBS=2 ; informat id best32.; informat name $6. ; informat height best32. ; informat weight best32. ; format id best12.; format name $6. ; format height best12. ; format weight best12. ; INPUT id name $ height weight ; RUN;
3-3 PROC IMPORT Statement
在 SAS 程式中,讀取外部檔案除了利用 INFILE 指令外,亦可利用點選式的互動視窗獨取共多種常見檔案格式(例如:Excel, dBase, CSV, TXT, ACCESS…等等)。
範例:自動化讀取 CSV 檔案 (1) 在 File 工具列點選 Import Data
-
14
DATA PROCESSING 2008
(2) 選擇欲讀取的資料類型(範例為.csv),然後按下 NEXT
(3) 利用 Browse 找到檔案的位置,然後按下 NEXT
(4) 設定進入 SAS 軟體的檔案名稱(範例檔設為 c2),然後按下 NEXT
-
15
DATA PROCESSING 2008
(5) 將讀檔過程儲存成.sas 程式檔(建議儲存),然後按下 Finish
(6) 儲存的 sas 程式檔程式碼如下
PROC IMPORT OUT= WORK.c2 DATAFILE= 'C:\Documents and Settings\USER\Desktop\輔大\test.csv' DBMS=CSV REPLACE; GETNAMES=YES; DATAROW=2; RUN;
3-4 Libname 系統資料夾設定
在慣用 SAS 程式的老手,大部分的資料都會儲存成 SAS 資料集(即副檔名為.sas7bdat 的系統資料檔),一方面可將資料做更有效的管理,也方便與其他軟體交換使用。 也因此,所謂的系統資料夾也因此而生,它可以直接建立所謂的資料夾超連結,方便使用者直接讀取 SAS 資料集,省去 import data 的過程。
libname 新的系統資料夾名稱 '相對資料夾實際位置'; 範例:
libname data 'C:\Documents and Settings\USER\Desktop\輔大'; DATA c3; SET data.test; RUN;
在輔大資料夾,其系統資料夾為 data,並且讀取 data 資料夾中的 test 檔案,設為c3。
-
16
DATA PROCESSING 2008
CLASS 4 資料重整
4-1 垂直合併
將具有相同變數名稱的檔案合併(注意:變數的格式需一樣)。 DATA 新資料檔名稱; SET 資料檔 1 資料檔 2; RUN;
4-1-1 如何知道變數格式?用 PROC CONTENTS procedure
PROC CONTENTS POSITION DATA=檔案名稱; RUN;
4-2 平行合併
針對具有共同變數欄位的檔案,平行合併,資加資料檔欄位。在平行合併檔案前,需針對共同變數欄位做排序。 4-2-1 排序語法
PROC SORT DATA=sas-data-set; BY variable-1……; RUN;
4-2-2 合併語法 範例:不具邏輯選擇
PROC SORT DATA=資料檔 1; BY 變數 1 變數 2; RUN; PROC SORT DATA=資料檔 2; BY 變數 1 變數 2; RUN; DATA new; MERGE 資料檔 1 資料檔 2; BY 變數 1 變數 2; RUN;
-
17
DATA PROCESSING 2008
範例:具有邏輯選擇 PROC SORT DATA=資料檔 1; BY 變數 1 變數 2; RUN; PROC SORT DATA=資料檔 2; BY 變數 1 變數 2; RUN; DATA new; MERGE 資料檔 1(in=邏輯變項 1) 資料檔 2(in=邏輯變項 2); BY 變數 1 變數 2; IF 邏輯變項 1; /*會以第一個檔案中的名單為主*/ RUN;
4-3 日期格式
在 SAS 系統中,往往需要進行日期計算,若資料在建檔或處理時,沒有規劃好時間的建置的話,則無法迅速及有效的完成日期計算。 4-3-1 格式指定語法 INFORMAT 指定讀入的格式 (一定要放在 Input 之前)
INFORMAT 變數名 格式; FORMAT 指定輸出的格式
FORMAT 變數名 格式; 4-3-2 日期格式
日期格式 MMDDYY10. MMDDYY8. DDMMYY8.
03/22/2007 or 03-22-2007 03/22/07 or 03-22-07 22/03/07 or 22-03-07
4-3-3 日期功能(functions)
日期整併 年 月 日 當日
MDY(month, day, year) YEAR(date) MONTH(date) DAY(date) TODAY()
將分散式年,月,日合併 回傳日期的年度 回傳日期的月份 回傳系統當天日期
-
18
DATA PROCESSING 2008
4-4 邏輯篩選
4-4-1 數學運算子 符號 記憶 意涵 = EQ equal to ^= or ~= or < > NE not equal to > GT greater than < LT less than >= GE greater than or equal to
-
19
DATA PROCESSING 2008
CLASS 5 統計模組
5-1 單一樣本 T 檢定
PROC TTEST DATA=sas-data-set H0=number; VAR variable; RUN;
5-2 成對樣本 T 檢定
PROC TTEST DATA=sas-data-set; PAIRED variable1*variable2; RUN;
5-3 獨立樣本 T 檢定
PROC TTEST DATA=sas-data-set; CLASS variable2; VAR variable1; run;
5-4 單因子變異數分析
PROC ANOVA DATA=sas-data-set; CLASS variable2; MODEL variable1=variable2; RUN;
5-5 卡方檢定與 Fisher’s 精確性檢定
PROC FREQ DATA=sas-data-set; TABLES variable1*variable2/chisq exact; RUN;
-
20
DATA PROCESSING 2008
5-6 McNemar 檢定
PROC FREQ DATA=sas-data-set; TABLES variable1*variable2/all agree; RUN;
5-7 Pearson、Spearman 相關
PROC CORR DATA= sas-data-set pearson; VAR a b c d e ; RUN;
5-8 複迴歸分析
PROC GLM DATA= sas-data-set; CLASS variable2; MODEL variable1=variable2/solution; RUN;
5-9 羅吉斯迴歸
PROC LOGISTIC DATA= sas-data-set descending; CLASS variable2(PARAM=ref ref=last); MODEL variable1=variable2/risklimits; RUN;