如何按组选择最后2个观测值?

时间:2014-02-15 18:10:47

标签: sas

如何在SAS中按组选择最后2个观察结果?我知道这些陈述(第一个也是最后一个。)但是这只选择了第一个观察的最后一个,我需要排序后的最后两个。

实施例: 我的数据:

    NAME  DATE 
    BOB  24/05/2013
    BOB  12/06/2012
    BOB  19/10/2011
    BOB  05/02/2010
    BOB  05/01/2009
    CARL 15/05/2011
    LOUI 15/01/2014
    LOUI 15/05/2013
    LOUI 15/05/2012

我需要这个结果

    NAME  DATE 
    BOB  24/05/2013
    BOB  12/06/2012
    CARL 15/05/2011
    LOUI 15/01/2014
    LOUI 15/05/2013

1 个答案:

答案 0 :(得分:4)

您可以使用enumeration within groups.

以下列方式使用first.变量

由于您希望保留每个名称的2个最新记录,请按以下方式对其进行排序:

PROC SORT DATA = mydata;
    BY name DESCENDING date;
RUN;

DATA recentObs;
    SET mydata;
    count + 1;
    BY name DESCENDING date;
    IF FIRST.name THEN count=1;
    IF count<=2 THEN OUTPUT;
RUN;

如果同名可以有&gt;你需要考虑如何处理案件在同一天记录1次。