RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SAS:?數(shù)據(jù)集的橫向合并(一)

冬至子 ? 來源:小高的SAS學(xué)習(xí)筆記 ? 作者:小高筆記 ? 2023-05-19 10:44 ? 次閱讀

一、一對一合并數(shù)據(jù)集

1.具有不同變量的數(shù)據(jù)集

在橫向合并中,當(dāng)兩個或更多的SAS數(shù)據(jù)集沒有相同的變量時,此時合并數(shù)據(jù)集的變量均會展示在數(shù)據(jù)集中。

data one;

input week $10.;

cards;

Week1

Week2

Week3

Week4

Week5

;

run;

/ 結(jié)果如下: /

圖片

data two;

input topic $10.;

cards;

Topic 1

Topic 2

Topic 3

Topic 4

Topic 5

;

run;

/ 結(jié)果如下: /

圖片

data all1;

merge one two;

run;

/ 結(jié)果如下: /

圖片

2.具有相同變量的數(shù)據(jù)集(不使用by語句)

當(dāng)兩個或更多的SAS數(shù)據(jù)集有相同的變量時,第 2 個數(shù)據(jù)集中的變量將覆蓋第 1 個數(shù)據(jù)集中的相同變量。如果不想要被覆蓋,則可以使用RENAME數(shù)據(jù)步驟選項來重新命名。

data three;

input ID $3. balance 4.;

cards;

001 102

005 89

002 231

004 147

003 192

;

run;

/ 結(jié)果如下: /

圖片

data four;

input Name $ 1-15 @17 balance 4.;

cards;

John Smith 96

Ted Husion 80

Martha Chen 150

Sandy Lee 100

Paul Leny 192

Avery 200

;

run;

/ 結(jié)果如下: /

圖片

data all2;

merge three four;

run;

/ 結(jié)果如下: /

圖片

**3.具有相同變量的數(shù)據(jù)集(使用by語句) **

與by語句的合并允許根據(jù)by變量的值來匹配觀測值。在合并之前,所有的輸入數(shù)據(jù)集必須按照BY或KEY變量進行排序。

data five;

input ID $3. balance 4. zip 6.;

cards;

001 102 16431

005 89 46298

002 231 98704

004 147 42316

003 192 44765

007 479 21496

;

run;

proc sort data=five;

by id;

run;

/ 結(jié)果如下: /

圖片

data six;

input Name $ 1-15 @17 balance 4. @23 ID $3.;

cards;

Sandy Lee 100 004

Paul Leny 192 003

John Smith 96 001

Ted Husion 80 005

Martha Chen 150 002

Jason Tod 244 006

;

run;

proc sort data=six;

by id;

run;

/ 結(jié)果如下: /

圖片

data all3;

merge five six;

by id;

run;

/ 結(jié)果如下: /

圖片

4.具有相同變量的數(shù)據(jù)集(使用by語句和in選項)

在上面的例子中,觀察值6和7來自兩個數(shù)據(jù)集中的一個。IN=選項創(chuàng)建了一個變量,可以識別數(shù)據(jù)集是否對輸出有貢獻。舉以下三個例子來讓大家理解:

例1:在上面的例子中,我們添加了另一個變量 "source",并使用IN=選項來識別每個輸入數(shù)據(jù)集的貢獻:

data all4;

length source $8;

merge five(in=in1) six(in=in2);

by id;

if in1 and in2 then source='Both';

else if in1 then source='Left';

else source='Right';

run;

/ 結(jié)果如下: /

圖片

例2:在上面的例子中,如果我們希望輸出的數(shù)據(jù)集只包含來自兩個輸入數(shù)據(jù)集的觀察值:

data all5;

merge five(in=in1) six(in=in2);

by id;

if in1 and in2 ;

run;

/ 結(jié)果如下: /

圖片

例3:我們希望輸出的數(shù)據(jù)集包含所有來自five輸入數(shù)據(jù)集的觀測值:

data all6;

merge five(in=in1) six(in=in2);

by id;

if in1 ;

run;

/ 結(jié)果如下: /

圖片

注意:如果匹配合并的目的是一對一的匹配合并,輸入的數(shù)據(jù)集應(yīng)該沒有重復(fù)的鍵。因此,在合并之前,可能需要在合并前對proc sort使用NODUPKEY選項。

二、一對多或多對一合并數(shù)據(jù)集

BY變量值在某一輸入數(shù)據(jù)集中存在重復(fù)值,即在其中一個輸入數(shù)據(jù)集中,含有兩條或兩條以上的觀測具有相同的BY變量值,也稱為一對多合并。

在匹配過程中會遵循如下原則:由輸入數(shù)據(jù)集讀入的變量值,會保留在PDV中,直到被下一個讀入的觀測值覆蓋或該BY組合處理完畢被重置為缺失值為止。為了更好的理解,通過一個簡單的例子來具體講解這一原則。

data seven;

input ID $3. zip 6.;

cards;

001 16431

005 46298

002 98704

004 42316

003 44765

007 21496

;

run;

proc sort data=seven out=seven;

by id;

run;

/ 結(jié)果如下: /

圖片

data eight;

input Name $ 1-15 @17 balance 4. @23 ID $3.;

cards;

Sandy Lee 100 004

Paul Leny 192 003

John Smith 96 001

Ted Husion 80 005

Martha Chen 150 002

Jason Tod 244 006

Avery 200 001

;

run;

proc sort data=eight out=eight;

by id;

run;

/ 結(jié)果如下: /

圖片

data all7;

merge seven eight;

by id;

run;

/ 結(jié)果如下: /

圖片

三、多對多合并數(shù)據(jù)集

雖然在匹配合并時,一般情況下BY變量值至多在某一個數(shù)據(jù)集中有重復(fù),但并不代表匹配合并只能處理這一種情況,它同樣可以處理兩個或兩個以上輸入數(shù)據(jù)集中的BY變量值重復(fù)的情況,也就是實現(xiàn)多對多合并。

SAS的匹配原則和一對多合并時一樣,并且新數(shù)據(jù)集中每一個BY變量值重復(fù)的次數(shù)和輸入數(shù)據(jù)集中重復(fù)次數(shù)最多的一樣。

data nine;

input id$3. number;

cards;

001 2

001 3

002 2

002 4

;

run;

proc sort data=nine out=nine;

by id;

run;

/ 結(jié)果如下: /

圖片

data ten;

input id$3. balance;

cards;

001 100

001 192

002 150

002 200

003 136

;

run;

proc sort data=ten out=ten;

by id;

run;

/ 結(jié)果如下: /

圖片

data all8;

merge nine ten;

by id;

run;

/ 結(jié)果如下: /

圖片

在上例中,all8數(shù)據(jù)集中有一部分id號的number信息,如果不想將這些id的信息包含在新生成的數(shù)據(jù)集中,就需要確定數(shù)據(jù)集使用數(shù)據(jù)集選項IN=可以幫助實現(xiàn)這一功能。

data all9;

merge nine(in=in1) ten(in=in2);

by id;

if in1;

run;

/ 結(jié)果如下: /

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SAS
    SAS
    +關(guān)注

    關(guān)注

    2

    文章

    523

    瀏覽量

    32860
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1208

    瀏覽量

    24689
收藏 人收藏

    評論

    相關(guān)推薦

    SAS走進企業(yè)級存儲應(yīng)用

    。 從并行到串行SCSI的轉(zhuǎn)變?yōu)橛脩籼峁┝?b class='flag-5'>一種更 新的路線圖,根據(jù)SCSI商業(yè)協(xié)會(STA)的計劃,將及時地從目前的3Gb/s發(fā)展到12Gb/s。SAS技術(shù)規(guī)范也準許在同應(yīng)用中同時使用串行 ATA
    發(fā)表于 11-13 21:58

    串行連接SCSI(SAS)技術(shù)開辟寬數(shù)據(jù)路徑

    SAS寬端口的胖數(shù)據(jù)管道。新出現(xiàn)的RAID控制器和存儲子系統(tǒng)利用了SAS寬端口的帶寬和低成本的優(yōu)勢。SAS通過在混合SAS和SATA硬盤的
    發(fā)表于 11-13 21:59

    SAS分區(qū)規(guī)范為所有SAS物理結(jié)構(gòu)提供靈活高效的接入控制,其特性包括

    顯著減少開發(fā)費用和加快產(chǎn)品上市時間。SMS個主要特性是可以在整個SAS結(jié)構(gòu)接入控制區(qū)進行完整配置和管理,此外,SMS通過圖形用戶界面以分級形式顯示SAS結(jié)構(gòu),便于將正確的分區(qū)特性分配給擴展器和終端設(shè)備。
    發(fā)表于 06-02 09:31

    SAS固態(tài)硬盤存儲技術(shù)

    、沖擊、腐蝕、高溫、低溫、鹽霧、潮濕等惡劣的作業(yè)環(huán)境。 速度:ASpec元存工業(yè)級SAS固態(tài)硬盤是個完全的雙向系統(tǒng),而SATA則繼承了IDE的特性,是半雙向通信的系統(tǒng)。因此SAS數(shù)據(jù)
    發(fā)表于 06-18 05:00

    SAS硬盤有什么特點?

    SCSI協(xié)議由于其深受信賴的可靠性和穩(wěn)定的功能,20年來直牢牢占據(jù)市場。3年前才推出的串行連接SCSI(SAS)延續(xù)了對SCSI的創(chuàng)新,具有全新水平的可擴展性、靈活性和經(jīng)濟有效性,為用戶提供接入、
    發(fā)表于 09-24 09:01

    SAS接口的設(shè)計

     SAS是新代的SCSI技術(shù),和現(xiàn)在流行的Serial ATA(SATA)硬盤相同,都是采用串行技術(shù)以獲得更高的傳輸速度,并通過縮短連結(jié)線改善內(nèi)部空間等。SAS是并行SCSI接口之后開發(fā)出的全新
    發(fā)表于 09-09 06:26

    數(shù)據(jù)文件合并

    次練手寫的小工具,可以批量將大量測試數(shù)據(jù)文件合并個文檔,以便后續(xù)處理,奉上源碼,各位可自由發(fā)揮。
    發(fā)表于 03-04 16:52

    結(jié)構(gòu)?;?b class='flag-5'>數(shù)據(jù)合并

    為了研究實際中的數(shù)據(jù)合并問題,對各類數(shù)據(jù)信息給予了整體表示,使數(shù)據(jù)、關(guān)聯(lián)關(guān)系和劃分共同組成了關(guān)聯(lián)組合結(jié)構(gòu),為
    發(fā)表于 01-17 10:50 ?0次下載

    種大數(shù)據(jù)的密度統(tǒng)計合并算法

    data sets,簡稱DSML).該算法將數(shù)據(jù)點的每個特征看作組獨立隨機變量,并根據(jù)獨立有限差分不等式獲得統(tǒng)計合并判定準則.首先,使用統(tǒng)計合并判定準則對Leaders算法做出改進
    發(fā)表于 01-21 11:45 ?1次下載

    5個必須知道的Pandas數(shù)據(jù)合并技巧

    concat是pandas中專門用于數(shù)據(jù)連接合并的函數(shù),功能非常強大,支持縱向合并橫向合并,默認情況下是縱向
    的頭像 發(fā)表于 04-13 10:35 ?2327次閱讀

    SAS:數(shù)據(jù)橫向合并(二)

    前面我們介紹了在data step中用merge的方法可以對數(shù)據(jù)橫向合并,這節(jié)我們來講講在procedure過程步中用proc sql的方法對數(shù)據(jù)
    的頭像 發(fā)表于 05-19 10:47 ?4794次閱讀
    <b class='flag-5'>SAS</b>:<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>的<b class='flag-5'>橫向</b><b class='flag-5'>合并</b>(二)

    ?SAS數(shù)據(jù)的input輸入方式

    SAS input輸入方法用于讀取原始數(shù)據(jù)。原始數(shù)據(jù)可以來自外部源或來自流數(shù)據(jù)。
    的頭像 發(fā)表于 05-19 14:50 ?2906次閱讀
    ?<b class='flag-5'>SAS</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>的input輸入方式

    SAS-3成式磁盤陣列解決方案用戶指南

    電子發(fā)燒友網(wǎng)站提供《SAS-3成式磁盤陣列解決方案用戶指南.pdf》資料免費下載
    發(fā)表于 08-04 10:20 ?0次下載
    <b class='flag-5'>SAS</b>-3<b class='flag-5'>集</b>成式磁盤陣列解決方案用戶指南

    SAS-2成RAID配置實用程序用戶指南

    電子發(fā)燒友網(wǎng)站提供《SAS-2成RAID配置實用程序用戶指南.pdf》資料免費下載
    發(fā)表于 08-10 16:25 ?0次下載
    <b class='flag-5'>SAS</b>-2<b class='flag-5'>集</b>成RAID配置實用程序用戶指南

    Yonghong Desktop端Excel 數(shù)據(jù)的優(yōu)化

    優(yōu)化,提升Excel?數(shù)據(jù)使用體驗。趕快來試試看有沒有你想要的功能吧。 01 Excel?數(shù)據(jù)支持同時上傳多個文件,多個文件可以“合并
    的頭像 發(fā)表于 09-08 11:13 ?500次閱讀
    Yonghong Desktop端Excel <b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>的優(yōu)化
    RM新时代网站-首页