2015-12-02 203 views
1

我有以下兩個數據集。我怎樣才能排除這些觀察結果DATA1DATA2在SAS中通過另一個數據集過濾數據集

data DATA1; 
    input Name $ 1-25; 
    datalines; 
Vincent, Martina 
Phillipon, Marie-Odile  
Gunter, Thomas    
Harbinger, Nicholas  
Benito, Gisela    
Rudelich, Herbert   
Sirignano, Emily   
Morrison, Michael   
; 
run; 

data DATA2; 
    input Name $ 1-25; 
    datalines; 
Vincent, Martina 
Morrison, Michael   
; 
run; 
+0

一個非常類似的問題,只是在這裏問:https://communities.sas.com/t5/SAS-程序/減法 - 雙SAS數據集/ mp/237476 – Reeza

回答

2

典型的例子存在,並經常討論(這是最有效的)的LEFT JOIN NULL vs. NOT IN vs NOT EXISTS的SQL查詢。

考慮PROC SQL相當於解決方案:

proc sql; 
    create table Data3 as 
     select Data1.Name 
      from Data1 
     left join Data2 on Data1.Name = Data2.Name 
      where Data2.Name is null; 
quit; 

proc sql; 
    create table Data4 as 
     select Data1.Name 
      from Data1 
      where Data1.Name 
     not in (select Data2.Name from Data2); 
quit; 

proc sql; 
    create table Data5 as 
     select Data1.Name 
      from Data1 
      where not exists 
     (select Data2.Name from Data2 
      where Data1.Name = Data2.Name); 
quit; 

輸出

Name 
Phillipon, Marie-Odile 
Gunter, Thomas 
Harbinger, Nicholas 
Benito, Gisela 
Rudelich, Herbert 
Sirignano, Emily 
+0

爲什麼只有當(內部)加入時左連接爲空? –

+0

OP想排除Data2值。使用內部連接(兩個集合匹配),我們無法過濾「where Data2.Name爲null」。換句話說,什麼都不會被排除。 – Parfait

+0

呃好吧 - 我誤解了 - 以爲OP是在尋求相反的... –