2014-03-26 170 views
1

假設我有一個數據集:合併數據集在SAS

ID Geogkey 
1 A 
1 B 
1 C 
2 W 
2 R 
2 S 

和其他數據集B:

ID Temp Date 
1 95 1 
1 100 2 
1 105 3 
2 10 1 

如何合併這兩個數據集,所以我得到每個三個記錄與geogkeys id = 1和一個記錄每個geogkeys哪裏id = 2?

+0

所以你想要1/A/95/1 1/A/100/2 1/A/105/3 1/B/95/1 1/B/100/2等等? – Joe

+0

@Joe這就是正確的 – lord12

回答

2

假設你想要的笛卡兒連接,你是最好關閉這樣做在SQL中,如果它不是太大:

proc sql; 
create table C as 
    select * from A,B 
    where A.ID=B.ID 
; 
quit; 

的選擇*將產生的警告ID變量覆蓋;如果這是一個問題,請明確說出您的選擇(select A.ID, A.Geogkey, B.Temp, B.date)。

+0

有無論如何用一個合併聲明來做到這一點?我知道sql比合並效率低。 – lord12

+1

你不一定正確。在這種情況下,如果你的數據不是很多,SQL可能是有效的。合併不能像這樣處理笛卡爾連接;您需要使用編程更復雜的鍵控語句。除非您發現無法處理您的數據,否則我會使用SQL。 – Joe

+1

不是。你可以在數據步驟中完成它,但是你需要遍歷行來完成它。堅持'proc sql'解決方案。 –