2024年2月13日發(作者:我的白羊座)

數據集的鏈接是把兩個或以上的觀測集連接成一個新的數據集。連接的方式有兩種,拼接和合并。在sas數據步中用t語句可以拼接數據集,而用merge語句合并數據集。其區別如下:
SAS數據集的連接
A B
Data C;
Set A B;
Run;
Data C;
Merge A B;
Run;
A
B
A B
1.數據集的拼接
數據集的拼接可分為三種主要的拼接情況:
(1)相同變量的數據集拼接
Data A;
Input common x;
Cards;
9801 1
9802 2
9803 3
Data B;
Input common x;
Cards;
9801 4
9802 5
9803 6
Data C;
Set A B;
Proc print data = C;
Run;
(2)不相同變量的數據集拼接
Data A;
Input common x;
Cards;
9801 1
9802 2
9803 3
Data B;
Input common y;
Cards;
9801 4
9802 5
9803 6
Data C;
Set A B;
Proc print data = C;
Run;
(3)按關鍵字排序后拼接數據集
Data A;
Input common x;
Cards;
9801 1
9802 2
9803 3
Data B;
Input common y;
Cards;
9801 4
9802 5
9803 6
Proc sort Data = A;
By common;
Proc sort data = B;
By common;
Data C;
Set A B;
By common;
Proc print data = C;
Run;
無論哪種拼接格式,用t語句生成的新數據集的觀測總數為原各輸入數據集觀測數之和。
2.數據集的合并
數據集的合并是通過merge語句把兩個或以上數據集中的兩條觀測或兩個以上的觀測合并為新生成數據集中的一條觀測。數據集的合并可分為兩種情況:一對一的合并(不帶by語句)和匹配合并(帶by語句)。
(1)一對一合并(不帶by語句)把一個數據集的第1條觀測同另外一個數據集的第1個觀測合并,第2條觀測同另外一個數據集中第2個觀測合并,以此類推。新生成的數據集的觀測總數為這些數據集中觀測個數的最大值。如果對應的數據集已沒有觀測,則相應的變量為
默認值。如果在幾個數據集中有共同的變量,則在合并后新生成的數據集中只有一個變量,其值為列在merge語句中最后一個含有該變量的數據集中的觀測值。注意:此時并不要求是否有相同變量,僅1-1合并。
Data A;
Input common x;
Cards;
9801 1
9802 2
9803 3
Data B;
Input common y;
Cards;
9801 4
9802 5
Data c;
Merge A B;
Proc print data = c;
Run;
(2)匹配合并(帶有by語句)。如果想把兩個或以上的數據集按照相同的關鍵字值合并,則在merge語句后面要用by跟關鍵字語句。且每一個數據集必須預先按照關鍵字排序好。如果2個數據集中的觀測的關鍵字值不匹配,輸出所有這些觀測,相應的新增變量的值為默認值。如果第2個數據集中的觀測站是多對多匹配,要注意新生成的數據集中相同關鍵字值的觀測值的觀測數為各數據集中這個關鍵字值的觀測數的最大值。相同關鍵字值的觀測按順序一對一合并,無論哪一個數據集中這個相同關鍵字值的觀測沒有了,都取這個相同關鍵字值的最后一條觀測繼續合并。
Data orders;
Input p_id quantity;
Cards;
9802 1
9803 2
9803 3
Data products;
Input p_id p_name $ price;
Cards;
9801 Apple 4
9803 Banana 6
Procsortdata = orders;
By p_id;
Procsortdata = products;
By p_id;
Data sales;
Merge orders products;
By p_id;
Run;
Procprintdata = sales;
Run;
本文發布于:2024-02-13 21:55:18,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1707832518141212.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:數據集的拼接和合并-SAS.doc
本文 PDF 下載地址:數據集的拼接和合并-SAS.pdf
| 留言與評論(共有 0 條評論) |