SAS:Proc sort nodupkeys错误

时间:2014-10-16 13:06:17

标签: sorting sas no-duplicates

我有两个数据集:

  • “mother” - 5,512个观测值,其中变量“MOTHER”= 1
  • “all_women” - 2,336,750个观测值,其中变量“MOTHER”= 0

我将两者合并如下:

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。我做了什么来介绍这个错误?

2 个答案:

答案 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次,则可能会解决问题。