版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2.SAS編程簡介,SAS程序由數(shù)據(jù)步和過程步構(gòu)成, 數(shù)據(jù)步(Data Step)的設(shè)計(jì)靈活多樣, 過程步(Proc Step)的設(shè)計(jì)比較規(guī)范, 我們先重點(diǎn)介紹SAS系統(tǒng)數(shù)據(jù)步(Data Step)編程。,由三部分組成;SAS語句以一個(gè)關(guān)鍵詞開始, 以分號(;)結(jié)束; Data esr; /*數(shù)據(jù)步:輸入并建立數(shù)據(jù)*/ Input x; Cards; 3 9 8 6 5 5 7 3 10 8 10 4 ; Proc print; /*過程步:調(diào)用現(xiàn)成的SAS過程,進(jìn)行統(tǒng)計(jì)分析*/ Run; /*在程序最后,指示過程步或數(shù)據(jù)步結(jié)束,可以提交*/,SAS程序結(jié)構(gòu):,Log窗輸出,Output窗輸出
2、,程序運(yùn)行-在編輯窗輸入程序后 點(diǎn)擊圖標(biāo) 按功能鍵“F8” 在命令行(窗)鍵入“submit” 在run下拉菜單中選“submit ” 窗口內(nèi)容保存-激活窗口后 在命令行(窗)鍵入 file “路徑文件名” 點(diǎn)擊圖標(biāo) 在file下拉菜單中選“save ”或“save as”,二、SAS程序和SAS數(shù)據(jù)集,常用的快捷鍵 F4 recall命令,用于edit窗,將前面提交的程序調(diào)回,可多次使用 F5 切換到edit窗 F6 切換到log窗 F7 切換到output窗 F8 submit命令 Ctrl-E 清除當(dāng)前窗口的內(nèi)容。 edit窗被清除的內(nèi)容不能用F4調(diào)回,二、SAS程序和SAS數(shù)據(jù)集,2.
3、1 SAS程序設(shè)計(jì)語言基本常識,SAS統(tǒng)計(jì)分析程序主要包括兩大步驟: 一是數(shù)據(jù)步:將需要分析處理的數(shù)據(jù)組織成SAS系統(tǒng)能夠接受的SAS數(shù)據(jù)集,數(shù)據(jù)步由Data關(guān)鍵字引出,大小寫均可,由實(shí)現(xiàn)數(shù)據(jù)輸入的數(shù)據(jù)步語句組成,完成計(jì)算原數(shù)據(jù)的準(zhǔn)備工作。 二是過程步:SAS系統(tǒng)所提供的強(qiáng)大的統(tǒng)計(jì)功能,都可以通過相應(yīng)的過程步實(shí)現(xiàn)。但是SAS程序只能對SAS數(shù)據(jù)集進(jìn)行操作,所以在進(jìn)行數(shù)據(jù)處理之前必須首先應(yīng)用數(shù)據(jù)步建立SAS數(shù)據(jù)集、或?qū)胪獠繑?shù)據(jù)生成SAS數(shù)據(jù)集、或者使用Viewtable窗口建立數(shù)據(jù)集。 SAS程序的數(shù)據(jù)步和過程步中,每一步都可以作為一段完整的程序單獨(dú)運(yùn)行,數(shù)據(jù)步用于生成數(shù)據(jù)集,過程步用于完成各
4、種數(shù)據(jù)分析、生成分析報(bào)告。,2.1.1 SAS程序書寫規(guī)范和運(yùn)行方法,1. SAS程序的基本語法規(guī)定如下: SAS程序中除了賦值、表達(dá)式、注釋和空語句之外,所有其它語句都以SAS關(guān)鍵字(SAS命令)引導(dǎo)(作為起始單詞),且不分大小寫。 程序中使用的所有計(jì)算對象(變量、數(shù)據(jù)集、邏輯庫)都必須按SAS標(biāo)識符定義規(guī)定命名。 標(biāo)識符命名規(guī)則為: 以字母或下劃線開頭。 由字母、數(shù)字、下劃線構(gòu)成。 應(yīng)用中不區(qū)分大小寫英文字母。 每個(gè)SAS語句都必須以半角分號“;”作為結(jié)束符。 SAS數(shù)據(jù)步語句以DATA關(guān)鍵字開頭,以RUN語句結(jié)尾。DATA步中可以使用INPUT、CARDS、INFILE、SET、MERG
5、E等語句指定數(shù)據(jù)源,也可以用賦值、分支、循環(huán)等程序流程控制語句實(shí)現(xiàn)復(fù)雜情況處理,完成復(fù)雜數(shù)據(jù)結(jié)構(gòu)的輸入和數(shù)據(jù)準(zhǔn)備。,為了提高程序的可讀性,在程序書寫格式上 應(yīng)遵循如下規(guī)則: 每個(gè)程序語句占一行。如果必須要占多行,從第二行起使用縮進(jìn)格式。 所有數(shù)據(jù)步和過程步結(jié)束均加上“run ;”語句作為段落的結(jié)束。 每段的第一條語句和最后一條語句的第一個(gè)字母列對齊,中間語句按縮進(jìn)格式寫。,SAS系統(tǒng)中有多種程序調(diào)用執(zhí)行的方法,常用的方法如下: 最基本的方式是點(diǎn)擊Submit提交按鈕,或按F8鍵,提交程序運(yùn)行。 選擇菜單Run|Submit,系統(tǒng)就會(huì)依次執(zhí)行提交的全部程序,并在LOG窗口中給出程序執(zhí)行狀態(tài)的信息
6、,在OUTPUT窗口中顯示計(jì)算分析的結(jié)果。 如果需要只執(zhí)行程序中的某一部分,可以先選中要執(zhí)行的程序段,然后按前面兩種方式調(diào)用即可。此功能在調(diào)試程序時(shí)非常有用。,2.1.2 SAS程序中的注釋,為了構(gòu)成清晰的程序結(jié)構(gòu),建立具有良好可讀性的 程序,在SAS程序中需要加入注釋。程序注釋內(nèi)容 采用/*和*/在兩端界定。注釋可以出現(xiàn)在程序中任 何允許加入空格的位置,可以占多行。我們有時(shí)常 把注釋語句放在被解釋的程序代碼的同一行內(nèi),有 時(shí)將注釋語句單獨(dú)占一行或若干行。下面是一個(gè)帶 有注釋的程序?qū)嵗?/* 建立02級1班學(xué)生考試成績的數(shù)據(jù)集 */ Data Stu0201; ,2.2 SAS DATA步簡
7、介,2.2.1 DATA步基本結(jié)構(gòu) DATA數(shù)據(jù)步的語法結(jié)構(gòu) : DATA 數(shù)據(jù)集名 ; INPUT 變量名1$ 變量名2$ 變量名n$; 其它數(shù)據(jù)步語句 ; CARDS; /* (或 CARDS4 ; 當(dāng)數(shù)據(jù)中有;作為數(shù)據(jù)時(shí)使用Cards4語句) */ 源數(shù)據(jù)行 ; /* (或 ; 上面使用了CARDS4語句時(shí),下面一定對應(yīng)使用4個(gè)分號) */ RUN;,2.2 SAS DATA步簡介,Data步語句說明: SAS處理的數(shù)據(jù)可分為:字符型、數(shù)值型兩大類,日期型數(shù)據(jù)屬于數(shù)值型。 字符型變量名后必須使用$說明符。 如分號;作為數(shù)據(jù)出現(xiàn)在數(shù)據(jù)行中,就要使用CARDS4語句,并且數(shù)據(jù)行結(jié)束時(shí)要用4個(gè)
8、分號以區(qū)別作為數(shù)據(jù)的分號;字符數(shù)據(jù) 。 每行數(shù)據(jù)的行尾不能有分號“;”,但數(shù)據(jù)行結(jié)束后的”;”分號必須單獨(dú)占一行。 變量名不分大小寫。,例2.1 data2_1.sas DATA CLASS ; INPUT NAME $ 1-11 SEX $ AGE HIGHT WEIGHT ; CARDS; ZHANG HONG F 18 176 75 WANG XING M 19 163 55 LI NING F 17 169 70 ; /*分號必須單獨(dú)占一行 */ RUN ; 注:INPUT語句中的NAME $ 1-11 是指變量NAME是字符型變量,數(shù)據(jù)在CARDS語句下方的數(shù)據(jù)行中占第1至11列,從
9、12列開始的數(shù)據(jù)是SEX變量的數(shù)據(jù)。SAS系統(tǒng)默認(rèn)地以空格為各變量的數(shù)據(jù)分隔符,當(dāng)某字符型變量的取值中含空格時(shí),必須使用列標(biāo)示指出該變量的取值長度,否則不能正確讀入數(shù)據(jù)。在CARDS語句中的各變量的數(shù)據(jù)取值時(shí)應(yīng)按列對齊,否則將導(dǎo)致數(shù)據(jù)獲取錯(cuò)誤。,2.2.2用DATA步生成SAS數(shù)據(jù)集,1. 用DATA步創(chuàng)建永久SAS數(shù)據(jù)集 SAS永久數(shù)據(jù)集需要使用兩水平名稱進(jìn)行定義。定義過程由定義邏輯庫與定義數(shù)據(jù)集兩個(gè)步驟完成。邏輯庫定義通過LIBNAME 語句完成,數(shù)據(jù)集定義應(yīng)用DATA實(shí)現(xiàn)。 LIBNAME 語句語法格式: LIBNAME 邏輯庫名稱 子目錄路徑 ; DATA 語句語法格式: DATA 邏
10、輯庫名.數(shù)據(jù)集名稱 ; LIBNAME語句把磁盤中的子目錄與用戶定義的邏輯庫名連接起來。,2.2.2用DATA步生成SAS數(shù)據(jù)集,程序Data2_2.sas LIBNAME EXAMPLE D:USER; DATA EXAMPLE.SALE ; INPUT NAME $ 1-11 SEX $ AGE HIGHT WEIGHT ; CARDS; ZHANG HONG F 18 176 75 WANG XING M 19 163 55 LI NING F 17 169 70 ; RUN ;,2. DATA步中的INPUT 語句 DATA步中的INPUT語句用來確定 SAS數(shù)據(jù)集、數(shù)據(jù)集的數(shù)據(jù)類型、
11、排列次序,并實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入。INPUT語句讀入CARDS語句下面的數(shù)據(jù)。對已經(jīng)存在的永久SAS數(shù)據(jù)集,可以使用用SET、MERGE、UPDATE 等命令實(shí)現(xiàn)數(shù)據(jù)集的調(diào)用、合并或修改。 INPUT 語句具有的四種使用格式: 1) 列標(biāo)識方式 (COLUMN) 格式: INPUT 變量名1$ 起始列-終止列 變量名2$ 起始列-終止列 變量名n$ 起始列-終止列; 注意,字符型變量要跟一個(gè)$字符 。,語句的功能與特點(diǎn): 輸入值嚴(yán)格按指定列號順序獲取。 字符型數(shù)據(jù)中可鑲嵌空格,數(shù)據(jù)最長為200個(gè)字符 。 缺失值可用空格補(bǔ)齊。 例如: INPUT NAME $ 1-12 SEX $ 13 AGE 14
12、-15 ;,2) 自由格式 : 格式:INPUT 變量名1$ 變量名2$ 變量名n$ ; 語句的功能與特點(diǎn): 數(shù)據(jù)項(xiàng)之間要至少用一個(gè)空格分隔 。 字符型數(shù)據(jù)中間不能有空格,且最長為200個(gè)字符 。 用小數(shù)點(diǎn) . 表示數(shù)值型數(shù)據(jù)的缺失值 。 每個(gè)字段變量要按順序排列 。,3) 格式輸入: 格式:INPUT 指針控制 變量輸入格式描述符 ; 指針控制: N 指針轉(zhuǎn)向第N列 ; (絕對移動(dòng)) + N 指針向右移N列 ; (相對移動(dòng)) 常用SAS變量輸入格式描述符說明: W. :寬度為 W 位標(biāo)準(zhǔn)數(shù)字,應(yīng)用實(shí)例: 8. ,指數(shù)值型數(shù)據(jù)長為8個(gè)字符,且小數(shù)點(diǎn)位為零位。 W.D :含小數(shù)點(diǎn)的標(biāo)準(zhǔn)數(shù)字,數(shù)字
13、總長度為W位,其中包括小數(shù)點(diǎn)占1位,小數(shù)占D位,以及正負(fù)符號占一位,所以所描述數(shù)據(jù)的整數(shù)部分的位數(shù)最多為W-D-2 位。應(yīng)用實(shí)例: 10.3 ,效果為523458.356 。 $W. :長度為W的標(biāo)準(zhǔn)字符串,應(yīng)用實(shí)例:$12. ,指字符串長度為12位。,COMMAW.D :長度位為W的數(shù)字,其中小數(shù)點(diǎn)占一位,小數(shù)部分占D位,正負(fù)號占一位,數(shù)據(jù)的整數(shù)部分每3位有一個(gè)逗號分隔符,逗號也占字符串寬度。應(yīng)用實(shí)例: COMMA12.1 ,效果為:63,145,690.5 。 $CHARW. :寬度為W,含有空格的字符串。 MMDDYY8. :日期格式 04/24/96 或04-24-96。 MMDDYY
14、10. :日期格式 04/24/1996 或04-24-1996。 有格式說明就不需用列方式,列方式與格式方式只能選其一,不能兩者同用。 例: INPUT NAME $12. 14 SEX $ +2 AGE 2. 25 SALE COMMA10.2 ;,4) 日期數(shù)據(jù)格式: SAS系統(tǒng)日期數(shù)據(jù)以1960年1月1日為起始日,系統(tǒng)以距離起始日期的總天數(shù)記錄實(shí)際日期。例如1962年3月20日被存儲(chǔ)為809,表示此日期與1960年1月1日相距809天。所以,當(dāng)變量的值為日期類型或時(shí)間類型時(shí),用戶必須規(guī)定變量的輸入和輸出格式。 SAS軟件包對日期變量和時(shí)間變量提供了多種的處理方式。讀入日期值時(shí)要說明所使
15、用的日期值格式。輸出顯示時(shí)也必須給定一種日期顯示格式,否則系統(tǒng)直接輸出總天數(shù)。 例如1997年12月20日,可用下列日期格式表示: MMDDYY6. 月日年6位 例: 122097 MMDDYY8. 月日年8位 例: 12/20/97 或12-20-97 或12201997 DDMMYY6. 日月年6位 例: 201297 YYMMDD6. 年月日6位 例: 971220 DATE7. 日月年7位 例: 20DEC97 DATE9. 日月年9位 例: 2ODEC1997 MMDDYY10. 月日年10位 例: 12/20/1997 或 12-20-1997,例2.3 日期與時(shí)間的格式應(yīng)用:(d
16、ata2_3.sas) DATA DAYS ; INPUT BIRTHDAY MMDDYY8. +1 INDAY MMDDYY8. +1 TESTDAY DATE9.; CARDS; 08-04-83 07/14/90 20SEP1990 11-14-83 07/26/90 20SEP1990 ; 注意:輸出的日期格式長度一般應(yīng)與日期的輸入格式一致。 如輸入格式為MMDDYY6. ,輸出格式可以是MMDDYY6. 或MMDDYY8. 。如果輸出格式為MMDDYY10. ,就會(huì)產(chǎn)生輸出錯(cuò)誤。,5) 組格式輸入: 組格式輸入語法格式: INPUT (變量1-變量N ) (輸入格式描述符); 例a:
17、 INPUT (x1-x5) (4.) ; /*變量x1-x5最多為4位整數(shù)*/ 例b: INPUT (aa bb ) ($8. ,7.2 ) ; (變量aa為8位長的字符型數(shù)據(jù),變量bb為7位長,且小數(shù)為2位的數(shù)值型數(shù)據(jù)) 例c: INPUT (Name price1-price6 ) ($12. 6*8.1); (變量Name為12位長的字符,price1-price6共6個(gè)變量均為8位長的數(shù)值,小數(shù)為1位),6) 高級輸入格式控制描述符: 行保持標(biāo)示符 和 : CARDS語句中的數(shù)據(jù)一行為一條觀測記錄,用多條INPUT語句讀入。 : CARDS語句中的數(shù)據(jù)一行為多條觀測記錄,用一條INP
18、UT 語句讀入。 / : 從下一行第一列開始讀數(shù)據(jù)。 #N :指明從第N行開始讀數(shù)據(jù) 。,例2.4 數(shù)據(jù)步中所有的INPUT語句完成一個(gè)觀測記錄的數(shù)據(jù)輸入 程序Data2_4.sas DATA A ; INPUT NAME $ AGE ; /* 此語句應(yīng)改寫為 : INPUT NAME $ AGE ;*/ INPUT WEIGHT ; CARDS ; ZHANG 23 75.6 XIAO 12 32 WEI 14 30 ; RUN ; PROC PRINT ; RUN ; 程序說明:PRINT過程是將數(shù)據(jù)集輸出到OUTPUT窗口,在以前DOS版的SAS系統(tǒng)軟件中,通常使用PRINT過程來查看生
19、成的SAS數(shù)據(jù)集。,2.2.3 DATA步中的常用語句,1. 賦值語句與表達(dá)式 在SAS中用賦值語句計(jì)算一個(gè)表達(dá)式的結(jié)果并將結(jié)果保存到賦值運(yùn)算符“=”左側(cè)的變量當(dāng)中。格式為: 變量名 = 表達(dá)式; 例如: avg=(math+Chinese+English)/3;isfcat = (sex=f);y=Log(x)*2;newprice = .; 其中第一個(gè)賦值語句用一個(gè)公式計(jì)算平均分?jǐn)?shù)。第二個(gè)表達(dá)式利用邏輯運(yùn)算生成一個(gè)取值為0或1的變量,當(dāng)性別變量“sex”的值為f時(shí),計(jì)算結(jié)果為1,否則為0。第三個(gè)表達(dá)式使用對數(shù)函數(shù)和乘方運(yùn)算。第四個(gè)表達(dá)式給變量賦了缺失值。注意:數(shù)值型變量的缺失值為點(diǎn)“.”,
20、字符型變量的缺失值為空格“ ”。,5. 分支語句 SAS系統(tǒng)提供2種實(shí)現(xiàn)分支結(jié)構(gòu)控制的語句,IF語句和SELECT語句。下面我們將分別介紹兩種語句的語法格式、功能與使用實(shí)例。 IF語句 語法格式: IF 邏輯表達(dá)式 THEN 語句1; ELSE 語句2; 語句功能:當(dāng)邏輯表達(dá)式的計(jì)算結(jié)果為真時(shí),執(zhí)行語句1,否則執(zhí)行語句2。,If x0 then put x is a positive number; If x0 then DO; put x is a positive number; x=2*x; put x=; END;,if x=0 then x=2*x; Else x=-x;,2)SEL
21、ECT語句 SAS的SELECT 結(jié)構(gòu)提供了更為靈活的多分支控制結(jié)構(gòu)。SELECT結(jié)構(gòu)有兩種基本用法。 SELECT語法結(jié)構(gòu)1: SELECT (選擇表達(dá)式);WHEN(值列表1) 語句1;WHEN(值列表2) 語句2;OTHERWISE 語句n;END; 其中“選擇表達(dá)式”是一個(gè)計(jì)算結(jié)果為數(shù)值或字符的表達(dá)式,“值列表”由一個(gè)或者若干項(xiàng)構(gòu)成,各項(xiàng)之間用逗號分隔,每項(xiàng)可以是一個(gè)與選擇表達(dá)式具有相同數(shù)據(jù)類型的常量或表達(dá)式?!罢Z句”可以是單個(gè)語句或復(fù)合語句。,Select(month); when(Feb,Mar,Apr) put spring; when(May,Jun,Jul) put summ
22、er; otherwise put autumn or winter; End;,Select; when(age=12) put 少年; when(age35) put 青年; otherwise put 中老年; End;,6. 循環(huán)語句 SAS提供三種循環(huán)控制結(jié)構(gòu)語句:DO循環(huán)、DO WHILE循環(huán)和DO UNTIL循環(huán)。 1)DO循環(huán)(又稱為計(jì)數(shù)DO循環(huán)) 語法格式: DO 計(jì)數(shù)變量 = 起始值 TO 結(jié)束值 BY 步長;循環(huán)體;END; 循環(huán)體由一個(gè)或多個(gè)程序語句構(gòu)成。計(jì)數(shù)變量、起始值、結(jié)束值、步長應(yīng)該是相同數(shù)據(jù)類型的變量。在一般情況下,當(dāng)步長大于0時(shí),起始值應(yīng)小于結(jié)束值;當(dāng)步長小于
23、0時(shí),起始值應(yīng)大于結(jié)束值。,Data bb ; do x=100 to 5000 by 50; y = SQRT(x); if y=50 then CONTINUE; z = Log(x); output ; format x 8.3 y 20.5 z 20.5; end; run; 這個(gè)程序?qū)?00到5000之間的值每隔50計(jì)算一次平 方根,規(guī)定變量x,y,z的輸出格式分別為8.3、20.5、 20.5 。如果平方根值大于等于50則不計(jì)算對數(shù), 而直接考慮下一個(gè)值。,DO WHILE當(dāng)型循環(huán) DO WHILE 循環(huán)的語法結(jié)構(gòu): DO WHILE(循環(huán)繼續(xù)條件) ;循環(huán)體語句;END; 循環(huán)繼
24、續(xù)條件:邏輯表達(dá)式。 循環(huán)體語句:SAS程序語句組。語句功能:語句開始執(zhí)行時(shí),程序首先判斷循環(huán)繼續(xù)條件表達(dá)式計(jì)算結(jié)果是否為真,若計(jì)算結(jié)果為真,則執(zhí)行循環(huán)體語句。循環(huán)體語句每執(zhí)行一次,則再檢驗(yàn)循環(huán)繼續(xù)條件表達(dá)式一次,如此重復(fù),直到循環(huán)繼續(xù)條件表達(dá)式計(jì)算結(jié)果為假,循環(huán)結(jié)束。,判斷1333333是不是素?cái)?shù),Data; x=1333333; i=3; Do while (mod(x,i)=0); i=i+2; End; if ix then put x is not a prime number; else put x is a prime number; run;,3)DO UNTIL直到型循環(huán) D
25、O UNTIL循環(huán)語法結(jié)構(gòu): DO UNTIL (循環(huán)退出條件) ;循環(huán)體語句;END;循環(huán)退出條件:邏輯表達(dá)式。循環(huán)體語句:SAS程序語句組。語句功能:語句開始執(zhí)行,首先執(zhí)行循環(huán)體,循環(huán)體每執(zhí)行一次,判斷一次循環(huán)退出條件表達(dá)式是否為真,當(dāng)表達(dá)式計(jì)算結(jié)果為真時(shí)結(jié)束循環(huán),否則重復(fù)執(zhí)行循環(huán)體語句并判斷循環(huán)結(jié)束條件表達(dá)式,直到表達(dá)式計(jì)算結(jié)果為真為止。,Data; n=0; do until (n=5); n=n+1; put n=; end; Run;,7. 常用函數(shù),1) 算術(shù)函數(shù)(Arithmetic Functions) ABS(x) :求x的絕對值。 例如ABS(-56.3)=56.3 。
26、MAX(x1,x2,xn) :求所有自變量中的最大一個(gè)。 例如MAX(52,15,67,89)=89 。 MIN(x1,x2,xn) :求所有自變量中的最小一個(gè)。例如MIN(52,15,67,89)=15 。 MOD(x,y) :求x除以y的余數(shù)。 例如MOD(24,3)=0 。 SIGN(x) :計(jì)算x的符號,結(jié)果為1、-1、0。例如SIGN(-5)=-1,SIGN(20)=1, SIGN(0)=0。 SQRT(x) :求x的平方根。 例如SQRT(225)=15 。,方法2: 可以先將原始數(shù)據(jù)輸入到Excel文件中,Excel表中第一行為變量名(變量名不能使用漢字);第二行開始輸入數(shù)據(jù),然
27、后保存文件并關(guān)閉該文件。注意文件名也不能使用漢字。 使用SAS系統(tǒng)主菜單Import Data命令,按照1.4節(jié)中的操作將Excel數(shù)據(jù)文件導(dǎo)入生成SAS數(shù)據(jù)集。 如果生成的SAS數(shù)據(jù)集名為CCC.studen,可以在EDITOR窗口中輸入以下語句: proc print data=CCC.student; run; 然后點(diǎn)擊Submit按鈕執(zhí)行該過程,在OUTPUT窗口 中將輸出該數(shù)據(jù)集內(nèi)容。,選擇變量,Data class3 (drop=test1 test2 test3 test4); Set class2; Run; Data class3 (keep=id average total
28、); Set class2; Run;,選擇觀測,Data a ; Set vital (firstobs=12 obs=53 keep= country birth); Run;,定義數(shù)組,數(shù)值型數(shù)組 Array tests(3) math chinese english (0,0,0); Array table(2,2) x11 x12 x21 x22; 二維數(shù)組元素按行排列 字符型數(shù)組 Array names(3) $10 child father mother;,SAS數(shù)據(jù)集建立-用input和cards語句直接輸入,data child; /*建立臨時(shí)數(shù)據(jù)集child.sd2,自動(dòng)放
29、在saswork子目錄下*/ input id x1 $ x2 x3 x4 x5 x6; /* 指明要輸入的變量 , $為字符型變量*/ cards; /*標(biāo)志數(shù)據(jù)區(qū)開始,數(shù)據(jù)之間以一個(gè)或幾個(gè)空格分隔*/ 1 m 32 95.5 14.0 53.5 49.64 2 m 35 92.0 13.0 52.0 41.61 3 m 33 89.0 12.5 53.5 35.81 254 m 176 168.0 53.5 82.0 100.14 255 f 30 91.0 11.0 48.0 35.39 256 f 33 91.0 11.5 47.0 44.98 521 f 178 163.0 51.0
30、 79.0 87.42 ; /* 標(biāo)志數(shù)據(jù)區(qū)結(jié)束,分號必須單獨(dú)一行 */ run;,SAS中的常用變量類型 數(shù)值型:不需特殊定義 字符型: 定義方式 變量名 $ 日期型:多種形式如: 變量名 mmddyy6. 實(shí)際記錄為距1960/01/01的天數(shù) 其它數(shù)據(jù)庫中的邏輯型、備注型變量在SAS中均為字符型變量。日期型變量轉(zhuǎn)進(jìn)SAS后一般也變?yōu)樽址妥兞俊?SAS數(shù)據(jù)集建立-用input和cards語句直接輸入,data a1; input id x1 $ x2 x3 x4; cards; 1 m 32 95.5 2 m 35 92.0 13.0 3 m 33 89.0 12.5 ; proc pr
31、int; run; 結(jié)果: OBS ID X1 X2 X3 X4 1 1 m 32 95.5 2.0 2 3 m 33 89.0 12.5,data a1; input id x1 $ x2 x3; cards; 1 m 32 95.5 2 m 35 92.0 13.0 3 m 33 89.0 12.5 ; proc print; run; 結(jié)果: OBS ID X1 X2 X3 1 1 m 32 95.5 2 2 m 35 92.0 3 3 m 33 89.0,SAS數(shù)據(jù)集建立,不分行符的使用 data esr; input x ; /*每讀入一天記錄后,數(shù)據(jù)指針保持原位不換行, 繼續(xù)讀下一
32、條記錄*/ cards; 3 9 8 6 5 5 7 3 10 8 10 4 ; proc means; run; 結(jié)果: Analysis Variable : X N Mean Std Dev Minimum Maximum - 12 6.5000000 2.5405797 3.0000000 10.0000000 -,SAS數(shù)據(jù)集建立,缺失值的輸入- 以 . 表示,缺失值不進(jìn)入分析 data child; input id x1 $ x2 x3 x4 x5 x6; cards; 1 m 32 95.5 14.0 53.5 49.64 2 m 35 . 13.0 52.0 41.61 3
33、m 33 89.0 12.5 53.5 35.81 254 m 176 168.0 53.5 82.0 100.14 255 f 30 91.0 11.0 48.0 35.39 256 f 33 91.0 11.5 47.0 44.98 521 f 178 163.0 51.0 79.0 87.42 ; proc means; run;,SAS數(shù)據(jù)集建立,結(jié)果 Variable N Mean Std Dev Minimum Maximum - ID 7 184.5714286 194.9639771 1.0000000 521.0000000 X2 7 73.8571429 70.477960
34、1 30.0000000 178.0000000 X3 6 116.2500000 38.2410120 89.0000000 168.0000000 X4 7 23.7857143 19.4825930 11.0000000 53.5000000 X5 7 59.2857143 14.7361719 47.0000000 82.0000000 X6 7 56.4271429 26.2540446 35.3900000 100.1400000 -,SAS數(shù)據(jù)集建立,如已存在一純文本文件c:child.txt,內(nèi)容如下: 1 m 32 95.5 14.0 53.5 49.64 2 m 35 92
35、.0 13.0 52.0 41.61 3 m 33 89.0 12.5 53.5 35.81 254 m 176 168.0 53.5 82.0 100.14 255 f 30 91.0 11.0 48.0 35.39 256 f 33 91.0 11.5 47.0 44.98 521 f 178 163.0 51.0 79.0 87.42 可用infile 直接讀入: Data child; Infile c:child.txt; Input id x1 $ x2 x3 x4 x5 x6; Run;,SAS數(shù)據(jù)集建立-Infile 和 input語句,利用file下拉菜單中的import功能
36、 ,可轉(zhuǎn)入: 文本型數(shù)據(jù):空格分隔、逗號分隔、制表鍵分隔 Dbase II 和 III數(shù)據(jù)庫(*.dbf) Excel數(shù)據(jù)庫(7.0版及以下,*.xls)。SAS8以上可轉(zhuǎn)入Excel97及2000的數(shù)據(jù)庫 Epi Info的數(shù)據(jù)可在Epi Info中用export模塊轉(zhuǎn)成*.sas文件(SAS的程序文件),在edit窗打開后,加上run;語句后提交運(yùn)行即可。 有的數(shù)據(jù)可通過粘貼的方法貼到edit窗后,加入input和cards等語句,生成sas數(shù)據(jù)集。,SAS數(shù)據(jù)集建立-從其他數(shù)據(jù)集轉(zhuǎn)入,SAS數(shù)據(jù)集名稱的表示方式:兩級文件名 庫關(guān)聯(lián)名. 數(shù)據(jù)集名 如 work.esr ,dw.esr(.s
37、d2 省略) 庫關(guān)聯(lián)名代表硬盤上某一(子)目錄,esr即放在該目錄下 定義庫關(guān)聯(lián)名:用 libname 命令 格式:libname 庫關(guān)聯(lián)名 “ 盤符:路徑”; 如: libname dw c:teach; dw 為庫關(guān)聯(lián)名,代表路徑c:teach; 庫關(guān)聯(lián)名可任意取,一旦定義,只要不退出SAS,始終有效()。但路徑必須實(shí)際存在,SAS數(shù)據(jù)集建立-永久數(shù)據(jù)集和臨時(shí)數(shù)據(jù)集,臨時(shí)數(shù)據(jù)集: 每次啟動(dòng)SAS時(shí),會(huì)自動(dòng)開辟一個(gè)臨時(shí)存儲(chǔ)區(qū),用于存儲(chǔ)data步或其它過程生成的SAS數(shù)據(jù)集。它庫關(guān)聯(lián)名為WORK,代表sassaswork子目錄。 一旦退出sas,臨時(shí)存儲(chǔ)區(qū)自動(dòng)刪除,存放在其中的數(shù)據(jù)集也會(huì)被自動(dòng)
38、刪除。即的sassaswork子目錄下的數(shù)據(jù)集被刪除,稱為臨時(shí)數(shù)據(jù)集 臨時(shí)數(shù)據(jù)集的庫關(guān)聯(lián)名默認(rèn)為work,均省略不寫。 如 data esr; (實(shí)際為work.esr),SAS數(shù)據(jù)集建立-永久數(shù)據(jù)集和臨時(shí)數(shù)據(jù)集,永久數(shù)據(jù)集: 通過兩級文件名的形式,將生成的數(shù)據(jù)集存放到saswork 以外的任意路徑中(庫關(guān)聯(lián)名所指向的路徑),即可以生成永久數(shù)據(jù)集,退出時(shí)不會(huì)被刪除。 如:libname dw c:teach; data dw.esr; /*在c:teach 生成esr .sd2數(shù)據(jù)集*/ input x1 x2 x3 ; (略) 退出SAS后再進(jìn)入: libname aa c:teach; 庫
39、關(guān)聯(lián)名一旦定義 ,它所代表的目錄下所有SAS數(shù)據(jù)集均可使用,不必再定義。,SAS數(shù)據(jù)集建立-永久數(shù)據(jù)集和臨時(shí)數(shù)據(jù)集,SAS數(shù)據(jù)集建立-永久數(shù)據(jù)集和臨時(shí)數(shù)據(jù)集,LIBNAME DS C:/DATA; PROC CHART DATA=DS.AA; VBAR EXCHANGE; TITLE 成交金額數(shù)據(jù)的缺省條形圖; RUN; 注:Proc 步的操作對象總是最新生成的SAS數(shù)據(jù)集。只有proc步時(shí),也可通過在proc語句后加data=來指定要分析的數(shù)據(jù)集。,data a; set DS.AA; proc print; run; Data b; Set a; Run;,從已建立的SAS數(shù)據(jù)集中讀入數(shù)據(jù)
40、建立新的SAS數(shù)據(jù)集-set命令,變量重命名: rename 舊變量名=新變量名; 如 rename id=x0; 變量賦值或修改變量值: 變量名=表達(dá)式; 或結(jié)合if語句進(jìn)行條件賦值: if then ; else ; 子集化:用keep或drop語句整理變量名表 keep ; drop ;,SAS數(shù)據(jù)集的整理-變量操作,data b1; set child; if id200 then group=1; else group=2; rename id=x0; keep id x1 x2 group; proc print; run; 注:keep id x1 x2 group 等價(jià)于 drop x3-x6;,OBS X0 X1 X2 GROUP 1 1 m 32 1 2 2 m 35 1 3 3 m 33 1 4 254 m 176 2 5 255 f 30 2 6 256 f 33 2 7 521 f 178 2,SAS數(shù)據(jù)集的整理-變量操作(例),數(shù)據(jù)子集化 記錄輸出 if then output 數(shù)據(jù)集; 記錄刪除 if the
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦燈和自救器管理工安全生產(chǎn)知識競賽考核試卷含答案
- 玻璃配料工崗前操作能力考核試卷含答案
- 重質(zhì)純堿工創(chuàng)新思維能力考核試卷含答案
- 咖啡師崗前理論技能考核試卷含答案
- 繼電器裝配工復(fù)試水平考核試卷含答案
- 2025年上海中僑職業(yè)技術(shù)大學(xué)輔導(dǎo)員考試參考題庫附答案
- 2025年三峽大學(xué)科技學(xué)院輔導(dǎo)員招聘備考題庫附答案
- 臨床檢驗(yàn)類設(shè)備組裝調(diào)試工崗前操作技能考核試卷含答案
- 制漿廢液回收工安全文化知識考核試卷含答案
- 2026屆云南省昆明市五華區(qū)數(shù)學(xué)高二第一學(xué)期期末考試試題含解析
- 老年人夏季健康知識講座
- 部編版六年級語文期末復(fù)習(xí)易錯(cuò)題專題練習(xí)
- 2025年深圳非高危安全管理員和企業(yè)負(fù)責(zé)人習(xí)題(有答案版)(1)1
- 飛行汽車課件
- 春節(jié)花草養(yǎng)護(hù)知識培訓(xùn)
- 消防安全隱患排查清單
- 新能源汽車火災(zāi)撲救課件
- 紅酒倒酒知識培訓(xùn)總結(jié)報(bào)告課件
- 電大專科《公共行政學(xué)》簡答論述題題庫及答案
- 2025成人高考全國統(tǒng)一考試專升本英語試題及答案
評論
0/150
提交評論