SAS系統(tǒng)和數(shù)據(jù)分析拼接和合并數(shù)據(jù)集.doc_第1頁
SAS系統(tǒng)和數(shù)據(jù)分析拼接和合并數(shù)據(jù)集.doc_第2頁
SAS系統(tǒng)和數(shù)據(jù)分析拼接和合并數(shù)據(jù)集.doc_第3頁
SAS系統(tǒng)和數(shù)據(jù)分析拼接和合并數(shù)據(jù)集.doc_第4頁
SAS系統(tǒng)和數(shù)據(jù)分析拼接和合并數(shù)據(jù)集.doc_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1f7f76589a0cfc81854dd84777caa878.pdf SAS系統(tǒng)和數(shù)據(jù)分析 電子商務(wù)系列第十二課 拼接和合并數(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.1 所示。圖12.1 數(shù)據(jù)集的兩種連接方式:拼接和合并一、 數(shù)據(jù)集的拼接數(shù)據(jù)集的拼接可分成三種主要的拼接情況:1. 相同變量的數(shù)據(jù)集拼接這是最簡單的情況,在這種情況下,新生成的數(shù)據(jù)集就含有這些相同的變量,觀測的數(shù)目是所有這些數(shù)據(jù)集的觀測總和。例如,數(shù)據(jù)集A和B都含有兩個相同的變量COMMOM和X,且都有三條觀測,如圖12.2 所示。圖12.2 含有相同的變量COMMOM和X的兩個數(shù)據(jù)集用下面程序生成新數(shù)據(jù)集C有兩個相同的變量COMMOM和X,6條觀測。Data A ;Input common x ;Cards ; 9801 1 9802 2 9803 3Data B ;Input common x ;Cards ; 9801 4 9802 5 9803 6Data C ;Set A B ;Proc print data=C ;Run;拼接生成的新數(shù)據(jù)集C的結(jié)果如圖12.3所示。圖12.3 相同變量的數(shù)據(jù)集拼接結(jié)果2. 不相同變量的數(shù)據(jù)集拼接如果兩個數(shù)據(jù)集A和B含有的變量不完全相同,如上例中數(shù)據(jù)集B含有的不是COMMON和X變量而是COMMON和Y變量,如圖12.4所示。用SET語句拼接A和B數(shù)據(jù)集后,新生成的數(shù)據(jù)集C就含有三個變量COMMON、X和Y,觀測的數(shù)目仍然是所有這些數(shù)據(jù)集的觀測總和,但原數(shù)據(jù)集中沒有的變量在拼接后新數(shù)據(jù)集中為缺失值。圖12.4 含有不相同的變量X和Y的兩個數(shù)據(jù)集生成新數(shù)據(jù)集C的程序如下:Data C ;Set A B ;Proc print data=C ;Run ;拼接生成的新數(shù)據(jù)集C的結(jié)果如圖12.5所示。圖12.5 不相同變量的數(shù)據(jù)集拼接結(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 sort data= A ;By Common ;Proc sort data= B ;By Common ;Data C ;Set A B ;By Common ;Proc print data=C ;Run ;拼接生成的新數(shù)據(jù)集C的結(jié)果如圖12.6所示。圖12.6 按關(guān)鍵字排序后拼接的數(shù)據(jù)集結(jié)果 無論哪一種拼接形式,用SET語句拼接生成的新數(shù)據(jù)集的觀測總數(shù)為原各輸入數(shù)據(jù)集觀測數(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語句中最后一個含有該變量的數(shù)據(jù)集中的觀測值。例如,我們有兩個數(shù)據(jù)集A和B,如圖12.7所示。圖12.7 含有不相同的變量和相同變量不同值的兩個數(shù)據(jù)集生成新數(shù)據(jù)集C的程序如下:Data C ;Merge A B ;Proc print data=C ;Run ;合并的新數(shù)據(jù)集C的結(jié)果如圖12.8所示。圖12.8 一對一合并(不帶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,如圖12.9所示。圖12.9 訂單數(shù)據(jù)集ORDERS和產(chǎn)品數(shù)據(jù)集PRODUCTS要合并生成一個新的訂單銷售數(shù)據(jù)集SALES的程序如下:Proc sort data= ORDERS ;By P_ID ;Proc sort data= PRODUCTS ;By P_ID ;Data SALES ;Merge ORDERS PRODUCTS ;By P_ID ;Proc print data=SALES ;Run ;合并的新數(shù)據(jù)集SALES結(jié)果如圖12.10所示。圖12.10 匹配合并(帶有BY語句)后的結(jié)果第十三課 PROC TRANSPOSE轉(zhuǎn)置數(shù)據(jù)集一、 轉(zhuǎn)置數(shù)據(jù)集的概念在對數(shù)據(jù)庫的操作中,有時需要把數(shù)據(jù)庫的行和列進(jìn)行交換,也可稱轉(zhuǎn)置。SAS系統(tǒng)中TRANSPOSE過程能完成對SAS數(shù)據(jù)集的轉(zhuǎn)置,即把觀測(行)變?yōu)樽兞浚校?,變量變?yōu)橛^測。該過程從讀入的一個數(shù)據(jù)集中創(chuàng)建一個新的數(shù)據(jù)集。新數(shù)據(jù)集中包含三類變量:l 一是由輸入數(shù)據(jù)集中的觀測轉(zhuǎn)置后創(chuàng)建的新變量,又稱轉(zhuǎn)置變量,如_NAME_、COL1、COL2、COL3l 二是從輸入數(shù)據(jù)集中拷貝過來的變量,使用COPY語句定義這個變量,新數(shù)據(jù)集中COPY過來的變量與輸入數(shù)據(jù)集中的變量具有相同的名字和值l 三是為了識別新數(shù)據(jù)集中每條觀測的來源用ID語句定義的變量值作為新數(shù)據(jù)集創(chuàng)建的新變量二、 使用PROC TRANSPOSE過程轉(zhuǎn)置數(shù)據(jù)集1. 用于TRANSPOSE過程的常用語句Proc Transpose ;Var 變量列表 ;Id 變量 ;Copy 變量列表 ;Run ;2. 轉(zhuǎn)置CLASS數(shù)據(jù)集例如,在CLASS數(shù)據(jù)集中有變量NAME、TEST1、TEST2和TEST3,是按每個學(xué)生各課程成績作為一條觀測來組織的,現(xiàn)在我們要創(chuàng)建一個按每門課程各個學(xué)生的考試成績作為一條觀測的新數(shù)據(jù)集NEWCLASS。程序如下:Proc Transpose Data=CLASS Out=NEWCLASS ;Var TEST1 TEST2 TEST3 ;Run ;轉(zhuǎn)置生成的新數(shù)據(jù)集NEWCLASS的結(jié)果如圖13.11所示。3. 設(shè)定新數(shù)據(jù)集中的轉(zhuǎn)置變量名圖13.11 由CLASS轉(zhuǎn)置生成的新數(shù)據(jù)集NEWCLASS新數(shù)據(jù)集中的轉(zhuǎn)置變量名是可以由用戶自己設(shè)定的。l 通過PROC TRANSPOSE語句的選項(xiàng)NAME=COURSE,修改了省缺的新變量名_NAME_為COURSEl 還可以通過選項(xiàng)PREFIX=NO,修改了省缺的新變量名COL1、COL2、COL3、COL4、COL5為NO1、NO2、NO3、NO4、NO5l 如果新變量名COL1、COL2、COL3、COL4、COL5想用輸入數(shù)據(jù)集CLASS中NAME變量中的對應(yīng)值來替代,使用ID命令定義NAME即可。這樣命名新變量的優(yōu)點(diǎn)是通過新變量名就可以很容易地識別原數(shù)據(jù)集中的觀察行修改程序如下:Proc Transpose Data=CLASS Out=NEWCLASS Name=COURSE ;Var TEST1 TEST2 TEST3 ;Id Name ;Run ;轉(zhuǎn)置生成的新數(shù)據(jù)集NEWCLASS的結(jié)果如圖13.12所示。圖13.12 使用ID語句轉(zhuǎn)置生成的新數(shù)據(jù)集NEWCLASS另外,還可以在PRO

溫馨提示

  • 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

提交評論