SAS:如何检查两个数据集中的相同变量是否不同?

时间:2017-02-18 15:06:39

标签: sas

我有两个数据集DA和DB,它们都包含变量ssn并按ssn排序。如何检查DA是否包含未在DB中列出的某些ssn,反之亦然?我认为proc比较,但似乎比较程序只能比较同一位置的观察结果。例如,如果

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。如何解决这个问题?

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您可以在PROC COMPARE中使用ID语句。未测试的:

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

也有输出到数据集的选项。

答案 2 :(得分: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;