2017-02-18 327 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; 
相关问题