2017-02-18 66 views
0

我有兩個數據集DA和DB,都包含變量ssn並按ssn排序。如何檢查DA是否包含未在數據庫中列出的一些ssn,反之亦然?我考慮了proc比較,但似乎比較程序只能比較相同位置的觀察結果。例如,如果SAS:如何檢查兩個數據集中的相同變量是否不同?

data DA; 
    input ssn &; 
    datalines; 
    100-00-0001 
    100-00-0003 
    100-00-0004 
; 


data DB; 
    input ssn &; 
    datalines; 
    100-00-0001 
    100-00-0002 
    100-00-0003 
; 

然後進行比較的結果將列出100-00-0003和100-00-0004雖然這兩個數據集包含100-00-0003。如何解決這個問題?

回答

1

通過SSN合併兩個數據集並輸出到不同的數據集,例如,

data A_only B_only; 
    merge DA(in = a keep = SSN) 
     DB(in = b keep = SSN); 
    by SSN; 
    if a and not(b) then output a_only; 
    if b and not(a) then output b_only; 
run; 
0

您可以使用ID聲明PROC對比。未經測試:

proc compare base=da compare=db listobs ; 
    id SSN ; 
run ; 

還有一些選項可以輸出到數據集。

0

使用PROC SQL:

proc sql; 
    select * from DA where ssn not in(select ssn from DB); 
    select * from DB where ssn not in(select ssn from DA); 
quit; 
相關問題