SAS消除重复的最有效方法

时间:2014-10-02 08:54:32

标签: duplicates sas

首先我知道我的问题类似于This(这与我发现的问题最接近),但同时存在一些差异,因此我的新帖子。

我有一个带有标识符和声明的数据库。声明构造为标识符+字母。 如果标识符是123456,则声明将为“123456A”,“123456B”等等

我想为每个标识符选择一个观察结果,声明是最后一个字母的声明,当然,并不总是相同。

我假设我可以使用proc类,然后使用nodupkey执行另一个:

proc sort data=have out=have2;
    by identifier declaration /descending;
run;

proc sort data=have2 out=want nodupkey;
    by declaration;
run;

但由于我有一个相对重要的数据库(数以千万计的观测数据),我想知道最好的方法,如果它是另一个更好的方法。 通常,如果可以一步完成。

由于

2 个答案:

答案 0 :(得分:0)

这看起来像是一个快速解决方案。它只设置第一个观察点(在您的情况下是最后一个,因为您已经按降序排序)。这意味着其余的记录甚至不会被加载到程序数据向量中。如果可能的话请告诉我它是怎么回事。我很好奇这是否是最佳的。我知道这只是在理论上才是真的。我从未在大型数据集上自行测试过。 10x

data want; 
     do until ( first.identifier ) ; 
         set have; 
         by identifier ;
     end ;
run;

答案 1 :(得分:0)

这应该有效:

proc sql;
create table want as
select 
identifier,
max(declaration) as last_declaration
from have
group by identifier;
quit;