我有一个数据库,其中一些观察结果有一个标识符 ident ,有些没有。我想创建一个新的数据库,在其中我删除了与我的 ident 变量重复的观察结果,但保留了 ident 缺失的观察结果。
如果我只是做一个proc sort nodupkey
proc sort nodupkey data=have;
by ident;
run;
然后它也消除了缺失的值。有没有一种简单的方法可以做到这一点(即不破坏数据集,proc将nodupkey排序为partn,然后重新组装)
答案 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;
保留每个标识的第一条记录,以及任何缺少标识的记录。