如何在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
答案 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次。