我有两个数据集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。如何解决这个问题?
答案 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;