CLASS 1 SAS 軟體介紹scholar.fju.edu.tw/課程大綱/upload/069324... · 1 DATA PROCESSING 2008...

20
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 的快捷圖示

Transcript of CLASS 1 SAS 軟體介紹scholar.fju.edu.tw/課程大綱/upload/069324... · 1 DATA PROCESSING 2008...

  • 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;