删除SAS中的所有重复项实例

时间:2014-08-12 23:06:18

标签: sas

我按ID号合并两个SAS数据集,并希望删除重复ID的所有实例,即如果在合并数据集中出现两次ID号,那么 两个观察结果将被删除

Web搜索已经提出了一些sql方法和nodupkey,但这些方法不起作用,因为它们用于典型的重复清理,其中保留一个实例,然后删除倍数。

2 个答案:

答案 0 :(得分:4)

假设您正在使用带有BY ID的DATA步骤;声明,然后添加:

if NOT (first.id and last.id) then delete;

应该这样做。如果这不起作用,请显示您的代码。

我实际上是将删除的记录写入单独数据集的粉丝,因此您可以跟踪在不同点上删除的记录数。所以我会编写类似的代码:

data want
     drop_dups
;
  merge a b ;
  by id ;
  if first.id and last.id then output want ;
  else output drop_dups ;
run ;

答案 1 :(得分:0)

这是一种SQL方法。您可以使用最适合您需要的左/右/内连接。请注意,这也适用于单个数据集。

proc sql;
    create table singles as 
    select * from dataset1 a inner join dataset2 b
    on a.ID = b.ID
    group by a.ID
    having count(*) = 1;
quit;

例如来自

ID  x
5   2
5   4
1   6
2   7
3   6

您将选择

ID  x
1   6
2   7
3   6