我的问题,如标题所述。具体就是proc sort data=have nodupkey out=nodu dupout=dups; by key1 key2; run; 其中out=nodu输出的数据集中出现了duplicate key1 and key2,只保留了first.key1 or first.key2,而dupout=dups输出了除first.key1 or first.key2之外的其余duplicate key1 and key2. 但实际做数据时,需要弄清楚哪些key1和key2,出现了重复,以及对于重复key1 and key2的观测到底该如何取舍。所以我想要的是把所有出现key1 and key2重复的观测全部输出,包括第一次出现的第一条观测。如下数据,我希望输出的数据集是这样的,其中a和b分别是key1和key2.
我希望得到的结果;
a b c
4 4 4
4 4 5
4 5 6
4 5 .
原始数据创建;
data aa;
input a b c;
cards;
2 2 3
4 5 6
4 4 4
4 4 5
4 5 .
7 7 8
9 5 5
;
run;
以下是我写的code及结果运行结果,都没有实现我想要的结果,求高手解答;
proc sort data=ex nodupkey out=nodu dupout=dups;
by a b;
run;
proc sql;
create table dupkeys as
select d.*,e.*
from nodu as d, dups as e
where d.a=e.a and d.b=e.b;
quit;
结果:
a b c
4 4 4
4 5 6
或者data bb;
merge nodu(in=x) dups(in=y);
by a b;
if x and y;
run;
结果:
a b c
4 4 5
4 5 .
拜托坛友解答,小弟不胜感激!