class 1 sas 軟體介紹scholar.fju.edu.tw/課程大綱/upload/069324... · 1 data processing 2008...

Post on 21-May-2020

13 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related