SAS統(tǒng)計應(yīng)用基礎(chǔ)(第二講)共4講.ppt_第1頁
SAS統(tǒng)計應(yīng)用基礎(chǔ)(第二講)共4講.ppt_第2頁
SAS統(tǒng)計應(yīng)用基礎(chǔ)(第二講)共4講.ppt_第3頁
SAS統(tǒng)計應(yīng)用基礎(chǔ)(第二講)共4講.ppt_第4頁
SAS統(tǒng)計應(yīng)用基礎(chǔ)(第二講)共4講.ppt_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第二章 SAS編程入門,2.1 SAS程序的使用常識,2.1.1 SAS語句的基本結(jié)構(gòu),SAS程序由若干個語句組成 多數(shù)語句都由特定的關(guān)鍵詞開始 語句中可包含變量名、運算符等,它們之間以空格分隔 所有的語句都以分號“;”結(jié)束 SAS對語句所占的行數(shù)無限制,一個語句可以占多行; 多個語句也可以寫在同一行內(nèi)。,一個簡單SAS程序示例,Libname a c:; Data a.case2_1; input x ; cards; 1 2 3 4 5 6 ; Proc print; var x; Run;,關(guān)鍵詞,表示該語句結(jié)束,環(huán)境設(shè)置語句,數(shù)據(jù)步,過程步,程序步,2.1.2 數(shù)據(jù)步與過程步,SAS程序的基本結(jié)構(gòu),數(shù)個完成單個動作的程序步,環(huán)境設(shè)置語句,數(shù)據(jù)步(Data Step) 創(chuàng)建和修改用于統(tǒng)計分析的數(shù)據(jù)集,過程步(Proc Step) 利用已建立的數(shù)據(jù)集完成特定的統(tǒng)計分析任務(wù),2.1.3 SAS程序的書寫規(guī)則,Libname a c:; Data a.case2_1; input x ; cards; 1 2 3 4 5 6 ; Proc print; var x; Run;,一個簡單SAS程序示例的另一種書寫形式,建議編寫SAS程序遵循以下規(guī)則:,除非特別長的語句,每個語句盡量只占一行。如必須要 占多行,從第二行起使用縮進格式以突出語句結(jié)構(gòu)。,所有數(shù)據(jù)步和過程步均主動加上“run;”語句作為結(jié)束。其 第一個語句和最后的RUN語句由第一列開始書寫,其他 語句按程序的邏輯結(jié)構(gòu)層次遵循縮進格式書寫,以使得 程序結(jié)構(gòu)更為清晰。,盡量只使用小寫字母。,在較長的程序段前后加上空行、注釋語句等以突出分段。,2.1.4 SAS程序的運行,SAS程序的調(diào)用方式,菜單方式:run submit,直接按F8鍵,單擊工具欄“小人右跑”按鈕,注:如果選中某一段程序,然后運行,則系統(tǒng)只執(zhí)行被選擇部分。,該功能在調(diào)試程序時非常有用。,2.1.5 SAS程序中的注釋,使長程序清晰易讀的方法: 1.在相應(yīng)程序段考慮使用空行分隔; 2.使用注釋加以說明,SAS中的注釋方式有兩種格式:,注釋語句:使用星號“*”開始,可占多行,以分號“;”作為結(jié)束。,注釋段落:用字符組“/*和*/”包括起來的任何字符內(nèi)容,可占多行。 注意/和*或者*和/不能有空格,否則系統(tǒng)會報錯。,2.2 SAS程序的數(shù)據(jù)步,數(shù)據(jù)步的作用:實現(xiàn)對數(shù)據(jù)的操作,包括數(shù)據(jù)集的建立、數(shù) 據(jù)訪問、數(shù)據(jù)編輯和數(shù)據(jù)文件管理。,2.2.1 SAS程序?qū)?shù)據(jù)文件的調(diào)方式,庫.數(shù)據(jù)文件,在PC中對應(yīng)于一個文件夾,指定庫標記的命令:libname 格式:libname 庫標記(庫名) 文件夾位置 選項;,例句: Libname a c:;,運行該語句后,庫名a已經(jīng)被指定給文件夾“c:”,存儲在c:目錄下的所有SAS文件都可以在程序中作為a庫中的文件被調(diào)用。,如數(shù)據(jù)文件“c:abc.sas7bdat”在上面的libname語句運行完畢后,就可以在程序中使用“a.abc”這一名稱來使用。,2.2.2 數(shù)據(jù)步的基本結(jié)構(gòu),數(shù)據(jù)步均以DATA語句開始,用于創(chuàng)建和處理數(shù)據(jù)集。最常用的語句有:,DATA 語句 標志數(shù)據(jù)步的開始,同時命名將要創(chuàng)建的SAS數(shù)據(jù)集。 一般格式為: DATA 數(shù)據(jù)集名;,例子: Data work.abc; data abc; data sasuser.abc; data a.abc;,2. INPUT語句,主要功能:1.產(chǎn)生變量;2.確定變量的讀入模式,使用格式:INPUT 變量名 ;,方括號表示其中的內(nèi)容為可選,如果不輸入,系統(tǒng)會以默認值代替。,例子:input x y z; input x1-x10; input x $ y;,第二句使用了縮寫符號,第三句中的$指明變量x為字符變量,表明數(shù)據(jù)是連續(xù)讀入的。,3. CARDS/DATALINES語句和數(shù)據(jù)塊,Cards語句(適用于任何版本),datalines語句(適用于8.0以后版本),均標志數(shù)據(jù)塊的開始,格式如下:,CARDS; 數(shù)據(jù)塊 ;,DATALINES; 數(shù)據(jù)塊 ;,注意事項:,1.數(shù)據(jù)塊必須單獨占一行或多行。 2.最后表示數(shù)據(jù)塊結(jié)束的分號也必須另起一行書寫。,3.如果需要讀入的數(shù)據(jù)塊中含有分號,則需要使 用 cards4 或datalines4 語句進行數(shù)據(jù)塊定義。,例子:,Data temp; Input varx $ vary varz; Datalines4; 24;77 195 177 24;31 220 213 24;56 173 166 24;12 135 125 ;,4. INFILE語句,主要功能:指定一個包含原始數(shù)據(jù)的外部文本文件,從而使得 數(shù)據(jù)步可以從這一文本文件讀入數(shù)據(jù)塊。,語法格式:INFILE 外部文件的所在位置及名稱 選項,注意: INFILE語句必須出現(xiàn)在INPUT語句之前。 在數(shù)據(jù)步中CARDS語句和INFILE語句都用于指定數(shù)據(jù)塊內(nèi)容, 分別對應(yīng)兩種數(shù)據(jù)輸入方式:直接輸入方式和外部文件讀入方式。,例子:,Data temp; Infile c:data123.txt; Input x1-x6; Proc print; Var x1 x2 x3 x5; Run;,5. OUTPUT語句,主要功能:強制輸出一條新記錄。,使用范圍:希望在一個執(zhí)行周期中生成一條數(shù)據(jù)記錄, 則可用output語句強制輸出一條新記錄。,Data temp; Do i=1 to 4; Input varx $ vary varz; End; Datalines4; 24;77 195 177,24;31 220 213 24;56 173 166 24;12 135 125 ; Run;,例子:,Data temp; Do i=1 to 4; Input varx $ vary varz; Output; End; Datalines4; 24;77 195 177 24;31 220 213 24;56 173 166 24;12 135 125 ; Run;,6. SET語句,主要功能:將指定的數(shù)據(jù)集的內(nèi)容完整地復制到新建的 數(shù)據(jù)集中。,語法格式:SET 庫標記.數(shù)據(jù)集名稱 選項,例子:,Data temp; Set a.abc; Run;,結(jié)果:把庫a.abc中的內(nèi)容原封不動地復制到了work.temp中。,2.3 SAS程序的過程步,過程步就是已經(jīng)編好了的用于實現(xiàn)各種統(tǒng)計分析功能的計算機程序。,過程步調(diào)用特征:PROC語句開始,后面緊跟著過程步名。,SAS常用的過程步: SORT 將指定的數(shù)據(jù)集按指定變量排序 PRINT 將數(shù)據(jù)集中的數(shù)據(jù)列表輸出 GCHART 繪出高分辨率的統(tǒng)計圖 UNIVARIATE 對指定的數(shù)值變量進行詳細的統(tǒng)計描述 MEANS 對指定的數(shù)值變量進行簡單的統(tǒng)計描述,FREQ 對指定的分類變量進行統(tǒng)計描述和檢驗 NPAR1WAY 進行非參數(shù)檢驗 TTEST 進行兩樣本t檢驗 ANOVA 進行多變量方差分析 GLM 擬合一般線性模型 REG 擬合多重線性回歸模型 CORR 進行指定變量間的相關(guān)分析 LOGISTIC 擬合logistic回歸模型 PHREG 擬合COX比例風險模型,2.3.1 過程步的基本結(jié)構(gòu),過程步的大致語法結(jié)構(gòu):,PROC 過程名 ; 該過程的專用語句描述 ; Run;,注意:,尖括號里的語句或選項可以省略,省略后該過程按最通常的情況來處理:,1.處理最新建立的SAS數(shù)據(jù)集。 2.處理所有的變量(或?qū)σ粋€計算過程來說處理全部數(shù)值變量) 3.一次處理整個數(shù)據(jù)集而不是某個子集。,對選項的設(shè)置: 不同的語句其選項的設(shè)置方式有所區(qū)別:過程本身的選項一般直接跟在過程名后即可,中間無需使用斜杠“/”,還有許多語句也不用分隔如OUTPUT語句。 但在某些語句中,如model語句中,選項和語句主干之間則必須使用“/”分隔。,編寫程序時,一定要恪守相應(yīng)過程步的語法約定!,2.3.2 過程步的語法說明,1.DATA 選項 功能:用于指定所需處理的數(shù)據(jù)集名。這時它是一個選項參 數(shù)而不是語句。,2.VAR 語句 功能:用于指定所需處理的特定變量。,例子: 在數(shù)據(jù)集中有x、y、z三個變量,如果只想顯示變量x的列表,可 用var進行限定: Proc print; Var x; Run;,3. WHERE 語句 功能:限定分析處理的范圍。如果想分析的不是整個數(shù)據(jù)集而 某個子集,則可用WHERE語句進行限定。,如果只想顯示大于50的X變量的值,則可以加入: Where x50; 如果條件為x,y 都要大于50,則where 語句改為: Where x50 and y50;,SAS中常用的邏輯表達符號有:and(和)、 or(或)、 xor (異或) ne(不等)等,它們均可在where 語句中使用。,3. BY 語句 功能:用于指定分組變量。,注意:BY語句并非必須語句。使用前必須用SORT過程按照 相應(yīng)的分組變量進行了升序和降序排列,否則,系統(tǒng) 會報錯。,對數(shù)據(jù)進行分組處理,可以有兩種方法實現(xiàn): 用不同的where語句將同一個過程步反復寫幾遍。 2. 采用by語句。(高效),例子: By y:,2.4 SAS程序的修改與調(diào)試,SAS程序非常復雜,需要進行不斷的修改與調(diào)試。,判斷程序編寫是否有錯的方法是仔細查看LOG日志。特別要注意其中的WARNING部分和ERROR部分。,查錯技巧: 一般在出錯地方的前一語句找錯,因為很多情況下是由于前一語句的錯誤導致了下一句的錯誤,甚至是很遠的語句導致了后面語句的錯誤。,2.5 結(jié)構(gòu)化語句簡介,每一種結(jié)構(gòu)化語言編寫的程序都由順序、分支、循環(huán)三種結(jié)構(gòu)構(gòu)成,SAS也不例外。,2.5.1 分支(條件)語句,在SAS中,條件語句有: IFThen組合(常用) SelectWhen組合兩種(較少用),1.IFTHEN語句,語法格式: IF 條件 THEN 程序塊 ELSE 程序塊,1.ELSE語句及其后的語句塊可以省略。,2.如果程序塊只有一句,則可以直接寫出(不要忘記結(jié)束時的 分號)。否則應(yīng)以DO開頭,以END結(jié)束。,注意:,例子:,在產(chǎn)生數(shù)據(jù)集 case2_2的同時為其增加變量class,當x50時class=1,否則class=2.,Data case2_2; 定義要建立的數(shù)據(jù)集 Input x y ; 要輸入的變量為X和Y,采用連續(xù)讀入方式 If x50 then class=1; 建立新變量CLASS,如果X50,則class=1 Else class=2; 否則,class=2 Cards; 數(shù)據(jù)塊開始 34 56 78 90 35 67 89 10 23 65 77 45 數(shù)據(jù)塊 ; 數(shù)據(jù)塊結(jié)束 Run; 數(shù)據(jù)步結(jié)束,開始運行以上程序,2.SELECTWHEN語句,語法格式: SELECT (表達式); WHEN(數(shù)值1) 執(zhí)行語句A; WHEN(數(shù)值2) 執(zhí)行語句B; OTHERWISE 執(zhí)行語句Z; END;,語法格式: SELECT; WHEN (條件1) 執(zhí)行語句A; WHEN (條件2) 執(zhí)行語句B; OTHERWISE 執(zhí)行語句Z; END;,如果上例用SELECTWHEN語句編寫,則程序為:,Data case2_2; Input x y ; Select; When (x50) class=2; Otherwise; End; Cards; 34 56 78 90 35 67 89 10 23 65 77 45 ; Run;,2.5.2 循環(huán)語句,1.DOEND語句,語法格式: DO 起始條件 TO 終止條件; 程序塊 END;,該語句主要用于建立數(shù)據(jù)集。,例子:,在產(chǎn)生數(shù)據(jù)集case2_2的同時為其增加變量class,取值依次為1、2。,Data case2_2; 定義要建立的數(shù)據(jù)集 Do class=1 to 2; 循環(huán)開始,控制變量為class,取值從1到2 Input x y ; 要輸入變量x 、y,采用連續(xù)讀入方式 Output; 用output語句將變量值寫成數(shù)據(jù)集中的記錄 End; 循環(huán)結(jié)束 Cards; 數(shù)據(jù)塊開始 34 56 78 90 35 67 89 10 23 65 77 45 數(shù)據(jù)塊 ; 數(shù)據(jù)塊結(jié)束 Run; 數(shù)據(jù)步結(jié)束,開始運行程序。,2.其它循環(huán)語句,另外兩種循環(huán)的實現(xiàn)語句為DO WHILE 和DO UNTIL,它們語法格式如下:,DO WHILE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論