0

我有两个数据集:

  • “母亲” - 变量“母亲”= 1 的 5,512 个观察值
  • "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 的观察结果。我做了什么来引入这个错误?

4

2 回答 2

2

不要使用 NODUPKEY,而是使用 FIRST./LAST。加工。

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;

这将保留任何只有 mom=0 的 ID(每个保留 1 条记录),并将保留所有 Mother=1 行。

于 2014-10-16T15:15:48.107 回答
1

您是否检查过母亲数据集中是否有任何重复的 ID?第二个 proc 排序将消除这些行。

你可以像这样检查:

proc sort data = mothers nodupkey out = mothers_dedup dupout = mothers_dups;
  by ID;
run;

如果mothers_dups包含超过 0 个观察值,这可能是问题的原因。

于 2014-10-16T13:23:15.703 回答