系統(tǒng)和數(shù)據(jù)分析SAS數(shù)據(jù)集的編輯_第1頁
系統(tǒng)和數(shù)據(jù)分析SAS數(shù)據(jù)集的編輯_第2頁
系統(tǒng)和數(shù)據(jù)分析SAS數(shù)據(jù)集的編輯_第3頁
系統(tǒng)和數(shù)據(jù)分析SAS數(shù)據(jù)集的編輯_第4頁
系統(tǒng)和數(shù)據(jù)分析SAS數(shù)據(jù)集的編輯_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第十一課 SAS數(shù)據(jù)集的編輯通常從外部數(shù)據(jù)源轉(zhuǎn)換得到SAS數(shù)據(jù)集后,并不是所有的數(shù)據(jù)集都滿足統(tǒng)計數(shù)據(jù)要求,可立即調(diào)用統(tǒng)計過程進(jìn)行統(tǒng)計分析。需要對數(shù)據(jù)集進(jìn)行滿足統(tǒng)計數(shù)據(jù)要求的編輯或生成新的數(shù)據(jù)集。一、 增加數(shù)據(jù)集一個新變量SAS系統(tǒng)可通過賦值語句把包含操作符的表達(dá)式賦值給數(shù)據(jù)集所要創(chuàng)建的新變量。SAS的表達(dá)式中還可以包含SAS函數(shù),如一些常用的SAS函數(shù)見下表:函數(shù)分類常用函數(shù)功能數(shù)學(xué)運算函數(shù)ABS( )取絕對值SQRT( )求平方根INT( )取整數(shù)部分EXP( )計數(shù)e的次冪LOG( )求e為底的自然對數(shù)SIN( )計算正弦LAGn( )求給定變量滯后為n的值統(tǒng)計計算函數(shù)MAX( )求最大值

2、MIN( )求最小值MEAN( )求平均值SUM( )求和DIFn( )求給定變量X的第n階差STD( )求標(biāo)準(zhǔn)差PROBNORM( )標(biāo)準(zhǔn)正態(tài)分布函數(shù)日期時間處理函數(shù)DATE( )/TODAY()取當(dāng)日的日期值DAY( )計算某月的那一日HOUR( )計算小時TIME( )取當(dāng)日的時間YEAR( )取年值字符函數(shù)INDEX( )搜尋字符串的位置LEFT( )字符串表達(dá)式左對齊SUBSTR( )抽取子字符串TRIM( )移走尾部空格LENGTH( )給出字符變量的長度UPCASE( )轉(zhuǎn)換為大寫財政金融函數(shù)COMPOUND( )計算復(fù)利IRR( )計算內(nèi)部贏利率NPV( )計算凈現(xiàn)值SAVIN

3、G( )計算定期儲蓄的本金和利息例如,有一個學(xué)生成績數(shù)據(jù)集中的數(shù)據(jù)來源寫在CARDS語句后,但我們還需產(chǎn)生新的變量平均分和總分,數(shù)據(jù)步的程序如下:Data class2 ;Input id test1-test5 ;average=mean(test1,test2,test3,test4,test5);total=test1+test2+test3+test4+test5;Cards ; 980801 100 100 100 100 100 980802 90 100 90 100 90 980803 81 82 83 84 85Proc print data=class2 ;Run ;在OU

4、TPUT窗口中顯示的運行結(jié)果見圖11.1所示。圖11.1 用賦值表達(dá)式創(chuàng)建數(shù)據(jù)集的新變量二、 選擇數(shù)據(jù)集的變量和觀測數(shù)據(jù)庫的三種基本操作是選擇、投影和連接,如果我們把數(shù)據(jù)庫看成是一張表格,選擇和投影操作相當(dāng)于從一張大的數(shù)據(jù)庫表格中挑選所需的行和列形成一張小的數(shù)據(jù)庫表格。連接操作相當(dāng)于把兩張或兩張以上的數(shù)據(jù)庫表格按某種規(guī)則合并成一張數(shù)據(jù)庫表格。原始數(shù)據(jù)庫表格可以是外部數(shù)據(jù)文件(用INFILE語句輸入),或在作業(yè)流中(用CARDS語句輸入),或來自其他SAS數(shù)據(jù)集(用SET語句輸入)。1. 選擇變量(即選擇列)使用DATA語句的DROP=和KEEP=選項可以控制從原始數(shù)據(jù)庫中讀出的變量是否被寫入將

5、要創(chuàng)建的數(shù)據(jù)集。例如,假設(shè)我們要從CLASS2數(shù)據(jù)集中產(chǎn)生只包含ID、AVERAGE和TOTAL變量,而不包含TEST1、TEST2、TEST3、TEST4、TEST5變量的新數(shù)據(jù)集CLASS3。有兩種程序編法都能達(dá)到相同的目的,一是使用DATA語句的DROP=選項,表示從原有變量中去掉DROP=中指明的變量;二是使用DATA語句的KEEP=選項,表示從原有變量中只保留KEEP=中指明的變量。程序如下:程序一:Data class3 (drop=test1 test2 test3 test4 test5);Setclass2;Proc print data=class3 ;Run;程序二:Da

6、ta class3 (keep=id average total );Setclass2 ;Proc print data=class3 ;Run ;程序一和程序二的運行結(jié)果相同。在OUTPUT窗口中顯示的運行結(jié)果如圖11.2所示。圖11.2 對數(shù)據(jù)集用DROP或KEEP進(jìn)行變量選擇2. 選擇觀測(即選擇行)選擇滿足條件的記錄行來形成新的數(shù)據(jù)集,可使用DATA步的IF語句,IF語句的作用就像一個過濾網(wǎng),IF語句中的條件表達(dá)式就像過濾網(wǎng)的形狀,只允許符合條件表達(dá)式的記錄行通過,如果條件表達(dá)式恒為真,意味著過濾網(wǎng)是空的,讓所有的記錄行通過。對于不符合條件的記錄行不作任何處理,直接回到數(shù)據(jù)步的頂部再

7、將下一條記錄來通過過濾網(wǎng)。如果在條件語句IF中使用了DELETE語句,則可以控制哪些記錄行不被寫入將要創(chuàng)建的新數(shù)據(jù)集。在條件表達(dá)式中要使用到比較操作符和邏輯操作符,SAS系統(tǒng)的比較操作符如下表所示:操作符符號意義LT<小于(Less Than)GT>大于(Greater Than)EQ=等于(Equal)LE<=小于等于(Less Equal)GE>=大于等于(Greater Equal)NE=不等于(Not Equal)IN等于列舉中一個SAS系統(tǒng)的邏輯操作符如下表所示:操作符符號意義AND&與OR|或NOT非請注意在條件表達(dá)示中使用上面兩個表中的操作符或符號

8、是等價的,特別要注意的是在一個復(fù)雜的條件表達(dá)式中可能同時包含算數(shù)運算符(+ - * / *)、比較操作符和邏輯操作符,此時運算的優(yōu)先次序為括號、算數(shù)運算符、比較操作符和邏輯操作符。下面的三個DATA步程序是從同一個數(shù)據(jù)集CLASS2中,按不同的條件表達(dá)式選擇記錄行形成新的數(shù)據(jù)集CLASS4,結(jié)果相同。程序一:Data class4;Set class2 ;if total ge 450 ;Proc print data=class4 ;Run ;程序二:Data class4;Set class2 ;iftotal lt 450 then delete;Proc printdata=class

9、4 ;Run ;程序三:Data class4;Set class2 ;if average>=80 and 100 in (test1,test2,test3,test4,test5) ;Proc print data=class4 ;Run ;運行結(jié)果如圖11.3 所示。圖11.3 用IF條件語句選擇數(shù)據(jù)集中的觀測第十二課 程序三中的IF語句條件表達(dá)式等價于IF average>=80 and (100=test1 or 100=test2 or 100=test3 or 100=test4 or 100=test5),由于AND的優(yōu)先級比OR的高,與條件表達(dá)式IF avera

10、ge>=80 and 100=test1 or 100=test2 or 100=test3 or 100=test4 or 100=test5是有區(qū)別的。拼接和合并數(shù)據(jù)集數(shù)據(jù)集的連接是把兩個或兩個以上的數(shù)據(jù)集的觀測連接成一個新的數(shù)據(jù)集。連接的方式有兩種:拼接和合并。在SAS數(shù)據(jù)步中用SET語句可以拼接數(shù)據(jù)集,而用MERGE語句可以合并數(shù)據(jù)集。例如,我們有兩個數(shù)據(jù)集A和B,要拼接和合并成新的數(shù)據(jù)集C,兩種不同方法的程序和結(jié)果見示意圖12.4 所示。圖12.4 數(shù)據(jù)集的兩種連接方式:拼接和合并一、 數(shù)據(jù)集的拼接數(shù)據(jù)集的拼接可分成三種主要的拼接情況:1. 相同變量的數(shù)據(jù)集拼接這是最簡單的情況

11、,在這種情況下,新生成的數(shù)據(jù)集就含有這些相同的變量,觀測的數(shù)目是所有這些數(shù)據(jù)集的觀測總和。例如,數(shù)據(jù)集A和B都含有兩個相同的變量COMMOM和X,且都有三條觀測,如圖12.5 所示。圖12.5 含有相同的變量COMMOM和X的兩個數(shù)據(jù)集用下面程序生成新數(shù)據(jù)集C有兩個相同的變量COMMOM和X,6條觀測。DataA;Inputcommon x ;Cards ;9801 19802 298033DataB ;Inputcommon x ;Cards ;9801 498025 98036Data C ;SetA B ;Proc printdata=C;Run;拼接生成的新數(shù)據(jù)集C的結(jié)果如圖12.6所

12、示。圖12.6 相同變量的數(shù)據(jù)集拼接結(jié)果2. 不相同變量的數(shù)據(jù)集拼接如果兩個數(shù)據(jù)集A和B含有的變量不完全相同,如上例中數(shù)據(jù)集B含有的不是COMMON和X變量而是COMMON和Y變量,如圖12.7所示。用SET語句拼接A和B數(shù)據(jù)集后,新生成的數(shù)據(jù)集C就含有三個變量COMMON、X和Y,觀測的數(shù)目仍然是所有這些數(shù)據(jù)集的觀測總和,但原數(shù)據(jù)集中沒有的變量在拼接后新數(shù)據(jù)集中為缺失值。圖12.7 含有不相同的變量X和Y的兩個數(shù)據(jù)集生成新數(shù)據(jù)集C的程序如下:Data C;Set A B ;Proc printdata=C ;Run;拼接生成的新數(shù)據(jù)集C的結(jié)果如圖12.8所示。圖12.8 不相同變量的數(shù)據(jù)集拼

13、接結(jié)果3. 按關(guān)鍵字排序后拼接數(shù)據(jù)集如果要求新生成的數(shù)據(jù)集C按共同的關(guān)鍵字例如COMMON排序觀測,那么預(yù)先要數(shù)據(jù)集A和B也已按COMMON關(guān)鍵字排序好,可通過排序過程PROC SORT 和BY指明關(guān)鍵字。生成新數(shù)據(jù)集C的程序如下:Proc sortdata= A;ByCommon ;Proc sortdata= B ;ByCommon ;DataC;Set A B ;ByCommon ;Proc print data=C ;Run;拼接生成的新數(shù)據(jù)集C的結(jié)果如圖12.9所示。圖12.9 按關(guān)鍵字排序后拼接的數(shù)據(jù)集結(jié)果無論哪一種拼接形式,用SET語句拼接生成的新數(shù)據(jù)集的觀測總數(shù)為原各輸入數(shù)據(jù)集

14、觀測數(shù)之和。二、 數(shù)據(jù)集的合并數(shù)據(jù)集的合并是通過使用MERGE語句把兩個或兩個以上數(shù)據(jù)集中的兩條觀測或兩條以上的觀測合并為新生數(shù)據(jù)集中的一條觀測。數(shù)據(jù)集的合并可分成兩種主要的合并情況:l 一對一合并(不帶BY語句)l 匹配合并(帶有BY語句)1. 一對一合并(不帶BY語句)把一個數(shù)據(jù)集中的第一條觀測同另外一個數(shù)據(jù)集中第一條觀測合并,第二條觀測同另外一個數(shù)據(jù)集中第二條觀測合并,以此類推。新生成的數(shù)據(jù)集中的觀測總數(shù)為這些數(shù)據(jù)集中觀測個數(shù)的最大值。如果相對應(yīng)的某個數(shù)據(jù)集已沒有觀測,則相應(yīng)的變量值為缺省值。如果在幾個數(shù)據(jù)集中有共同的變量,則在合并后新生成的數(shù)據(jù)集中只有一個變量,其值為列在MERGE語句

15、中最后一個含有該變量的數(shù)據(jù)集中的觀測值。例如,我們有兩個數(shù)據(jù)集A和B,如圖12.10所示。圖12.10 含有不相同的變量和相同變量不同值的兩個數(shù)據(jù)集生成新數(shù)據(jù)集C的程序如下:Data C ;MergeA B;Proc printdata=C ;Run;合并的新數(shù)據(jù)集C的結(jié)果如圖12.11所示。圖12.11 一對一合并(不帶BY語句)后的結(jié)果2. 匹配合并(帶有BY語句)如果想把兩個或兩個以上的數(shù)據(jù)集按照相同的關(guān)鍵字值合并,則在MERGE語句后面要用BY跟關(guān)鍵字語句。且每一個數(shù)據(jù)集必須預(yù)先按關(guān)鍵字排序好。如果兩個數(shù)據(jù)集中觀測的關(guān)鍵字值不匹配,輸出所有這些觀測,相應(yīng)的新增變量的值為缺省值。如果兩個數(shù)據(jù)集中觀測的關(guān)鍵字值是多對多匹配,要注意新生成的數(shù)據(jù)集中相同關(guān)鍵字值的觀測數(shù)為各數(shù)據(jù)集中這個關(guān)鍵字值的觀測數(shù)的最大值,相同關(guān)鍵字值的觀測按順序一對一合并,無論哪一個數(shù)據(jù)集中這個相同關(guān)鍵字值的觀測沒有了,都取這個相同關(guān)鍵字值的最后一條觀測繼續(xù)合并。例如,我們有一個訂單數(shù)據(jù)集ORDERS和一個產(chǎn)品數(shù)據(jù)集PRODUCTS,如圖

溫馨提示

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

評論

0/150

提交評論