2017-06-22 78 views
1

我有兩個表,這對於簡單起見有:條件合併

表1:

Date  ID 
20170401 X 
20170501 Y 
20170601 Z 

表2:

Date  ID 
20170201 Z 
20170301 Y 
20170501 X 

我想創建一個新的表格,它具有表格1中的所有內容,除非表2中的前一日期發生了ID。

期望的輸出對於表1和2將是:

Date ID 
20170401 X 

這是我現在有。我不知道放在哪裏條件合併:

data new; 
merge table1 table2(in=b); 
by date ID; 
if not b [where table2.date is before table1.date]; 
run; 

感謝

回答

0

不幸的是SAS覆蓋具有相同名稱的變量,所以在表2重命名的日期。合併ID並只保留在table1中並傳遞日期標準。然後放下date2列,因爲它不需要。

data new; 
    merge table1 (in=a) table2(in=b rename=(date=date2)); 
    by ID; 
    if a and not(date2<date); 
    drop date2; 
    run; 
+0

感謝您的幫助,但此解決方案正在合併table1中的ID與table1中table1中不存在的日期。如果我只希望table1中的ID與table1中的日期一致,那麼我該怎麼做?謝謝。 –

+0

這比較複雜,你想匹配ID,日期,然後排除一個ID,如果它有另一個* table2的日期早於匹配的行嗎? – mjsqu