版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玉溪師范學(xué)院《環(huán)境生態(tài)監(jiān)測》2021-2022學(xué)年第一學(xué)期期末試卷
- 玉溪師范學(xué)院《二維設(shè)計基礎(chǔ)》2022-2023學(xué)年第一學(xué)期期末試卷
- 玉溪師范學(xué)院《測量基礎(chǔ)實驗》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024專利實施許可合同樣式
- 2024復(fù)印機(jī)出租合同范文
- 2024農(nóng)村土地流轉(zhuǎn)合同【農(nóng)村土地承包經(jīng)營權(quán)流轉(zhuǎn)合同】
- 2024不簽勞動合同受到《勞動法》保護(hù)管理資料
- 2024廣告牌承攬合同范本
- 鹽城師范學(xué)院《算法設(shè)計與分析》2021-2022學(xué)年期末試卷
- 2024房屋裝修合同銀行貸款
- 廉政風(fēng)險防控工作方案
- 成人防溺水安全教育
- T-CACM 1420-2022 中成藥安慰劑模擬效果評價規(guī)范
- 正確認(rèn)識人的本質(zhì)
- 兒童心理學(xué)教育培訓(xùn)家庭教育輔導(dǎo)
- 2024年北京排水集團(tuán)招聘筆試沖刺題(帶答案解析)
- 感恩心態(tài)在組織變革中的作用
- 藥用輔料大全課件
- Unit+2+Natural+disasters+Welcome+to+the+unit+ Reading+課件 【高效課堂精研】 高中英語譯林版(2020)必修第三冊
- Vlog創(chuàng)作全流程(剪映短視頻創(chuàng)作案例教程)
- Unit3ConservationLesson3TheRoadtoDestruction課件-北師大版選擇性
評論
0/150
提交評論