我有两个数据集:
我将两者合并如下:
data combined;
set mothers all_women;
现在由于母亲已经在数据集all_women中,我想删除重复的条目 - 条件是我保持观察“MOTHER”= 1。
我尝试了以下内容:
proc sort data=combined; by ID DESCENDING MOTHER; run;
proc sort data=combined nodupkeys; by ID; run;
但是我失去了一些母亲,因为我只剩下5458个观察,其中“母亲”= 1。我做了什么来介绍这个错误?
答案 0 :(得分:2)
请使用FIRST./LAST,而不是使用NODUPKEY。处理
proc sort data=combined;
by ID DESCENDING MOTHER;
run;
data want;
set combined;
by ID descending mother;
if not (first.ID) and (mother=0) then delete;
run;
这将保留任何只有母亲= 0的ID(每个记录保留1条记录),并保留所有母亲= 1行。
答案 1 :(得分:1)
您是否检查过母亲数据集中是否有任何重复的ID?第二个过程排序将消除这些行。
您可以这样检查:
proc sort data = mothers nodupkey out = mothers_dedup dupout = mothers_dups;
by ID;
run;
如果mothers_dups
包含的观察次数超过0次,则可能会解决问题。