使用nodupkey保留缺少的值

时间:2014-10-22 13:20:44

标签: sas

我有一个数据库,其中一些观察结果有一个标识符 ident ,有些没有。我想创建一个新的数据库,在其中我删除了与我的 ident 变量重复的观察结果,但保留了 ident 缺失的观察结果。

如果我只是做一个proc sort nodupkey

proc sort nodupkey data=have;
    by ident;
    run;

然后它也消除了缺失的值。有没有一种简单的方法可以做到这一点(即不破坏数据集,proc将nodupkey排序为partn,然后重新组装)

1 个答案:

答案 0 :(得分:3)

删除重复项时,您有几个选项。

首先,dupout=<dataset>上的proc sort会将所有重复内容发送到另一个数据集,如果您想对其进行操作,则可以。但这是你打破数据集的后端版本,可能更快,因为它只打破了较小的部分。

更简单的是自己做重复数据删除。

proc sort data=have;
  by ident;
run;

data want;
  set have;
  by ident;
  if (first.ident) or missing(ident);
run;

保留每个标识的第一条记录,以及任何缺少标识的记录。