按 SAS 分组 - 选择多个观测值

Group By SAS - Selecting Multiple Obs

我正在尝试select以下观察组中的所有最新日期

全部数据

  ID    Date <br/>

   1    02/01/2015 <br/>
   1    02/01/2015 <br/>
   1    02/01/2015 <br/>
   1    01/01/2015 <br/>
   1    01/01/2015 <br/>
   1    01/01/2015 <br/>

   2    04/01/2014 <br/>
   2    04/01/2014 <br/>
   2    04/01/2014 <br/>
   2    05/01/2014 <br/>
   2    05/01/2014 <br/>
   2    05/01/2014 <br/>

我已经尝试了 IF.FIRST & LAST 等..但是我只是不断获得第一个 obs 例如....

数据错误

  ID    Date  <br/>

   1    02/01/2015 <br/>
   2    04/01/2014 <br/>

我追求的是...

子集数据

      ID    Date  <br/>

       1    02/01/2015 <br/>
       1    02/01/2015 <br/>
       1    02/01/2015 <br/>
       2    04/01/2014 <br/>
       2    04/01/2014 <br/>
       2    04/01/2014 <br/>

希望有人能帮忙!
非常感谢!

您可以使用 proc sql 执行此操作。 SQL 语句是:

select t.*
from fulldata t
where t.date = (select max(t2.date) from fulldata t2);

编辑:

如果您想要每个 id 的最大日期,只需使用相关子查询:

select t.*
from fulldata t
where t.date = (select max(t2.date) from fulldata t2 where t2.id = t.id);

此解决方案可能适用于您已有的解决方案。获取您的 WrongData 并与您的 FullData 合并以获得所需的输出。

data Want;
merge FullData WrongData (in=A);
by id date;
if A;
run;