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

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論