按SAS分组 - 选择多个Obs

时间:2015-08-05 12:49:25

标签: sql date sas proc

我正在尝试从下面的观察组中选择所有最近的日期

完整数据

  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&amp;最后等等。但是我只是保持得到第一个障碍物......

错误的数据

  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/>

希望有人可以帮忙!
非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以使用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);

答案 1 :(得分:0)

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

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