有一组数据,含有个体(id)、日期(date)以及是否发生某事件(happen)三个变量,表示个体发生特定事件的日期。
想获取个体发生特定事件前某段时间的样本数据,例如事件发生(happen=1)时前100行到前30行的数据,求教如何编写SAS程序。例如下面的数据a,求取个体事件发生前10行到前3行的数据(若取不到前10行,则取到第一行就截止),谢谢!数据量比较大,所以没法手工筛选,只能求助软件。
| id | date | happen | 
| 1 | 2001/1/1 | 0 | 
| 1 | 2001/1/2 | 0 | 
| 1 | 2001/1/3 | 0 | 
| 1 | 2001/1/4 | 0 | 
| 1 | 2001/1/5 | 0 | 
| 1 | 2001/1/6 | 0 | 
| 1 | 2001/1/7 | 0 | 
| 1 | 2001/1/8 | 0 | 
| 1 | 2001/1/9 | 0 | 
| 1 | 2001/1/10 | 0 | 
| 1 | 2001/1/11 | 0 | 
| 1 | 2001/1/12 | 0 | 
| 1 | 2001/1/13 | 1 | 
| 1 | 2001/1/14 | 0 | 
| 1 | 2001/1/15 | 0 | 
| 1 | 2001/1/16 | 0 | 
| 1 | 2001/1/17 | 0 | 
| 1 | 2001/1/18 | 0 | 
| 2 | 2003/3/2 | 0 | 
| 2 | 2003/3/3 | 0 | 
| 2 | 2003/3/4 | 0 | 
| 2 | 2003/3/5 | 0 | 
| 2 | 2003/3/6 | 0 | 
| 2 | 2003/3/7 | 0 | 
| 2 | 2003/3/8 | 0 | 
| 2 | 2003/3/9 | 0 | 
| 2 | 2003/3/10 | 0 | 
| 2 | 2003/3/11 | 0 | 
| 2 | 2003/3/12 | 0 | 
| 2 | 2003/3/13 | 1 | 
| 2 | 2003/3/14 | 0 | 
| 2 | 2003/3/15 | 0 | 
| 3 | 2002/8/2 | 0 | 
| 3 | 2002/8/3 | 0 | 
| 3 | 2002/8/4 | 0 | 
| 3 | 2002/8/5 | 0 | 
| 3 | 2002/8/6 | 0 | 
| 3 | 2002/8/7 | 0 | 
| 3 | 2002/8/8 | 0 | 
| 3 | 2002/8/9 | 0 | 
| 3 | 2002/8/10 | 0 | 
| 3 | 2002/8/11 | 0 | 
| 3 | 2002/8/12 | 0 | 
| 3 | 2002/8/13 | 1 | 
| 3 | 2002/8/14 | 0 | 
| 3 | 2002/8/15 | 0 | 
| 3 | 2002/8/16 | 0 | 
得到数据:
| id | date | happen | 
| 1 | 2001/1/1 | 0 | 
| 1 | 2001/1/2 | 0 | 
| 1 | 2001/1/3 | 0 | 
| 1 | 2001/1/4 | 0 | 
| 1 | 2001/1/5 | 0 | 
| 1 | 2001/1/6 | 0 | 
| 1 | 2001/1/7 | 0 | 
| 1 | 2001/1/8 | 0 | 
| 1 | 2001/1/9 | 0 | 
| 1 | 2001/1/10 | 0 | 
| 2 | 2003/3/2 | 0 | 
| 2 | 2003/3/3 | 0 | 
| 2 | 2003/3/4 | 0 | 
| 2 | 2003/3/5 | 0 | 
| 2 | 2003/3/6 | 0 | 
| 2 | 2003/3/7 | 0 | 
| 2 | 2003/3/8 | 0 | 
| 2 | 2003/3/9 | 0 | 
| 2 | 2003/3/10 | 0 | 
| 3 | 2002/8/3 | 0 | 
| 3 | 2002/8/4 | 0 | 
| 3 | 2002/8/5 | 0 | 
| 3 | 2002/8/6 | 0 | 
| 3 | 2002/8/7 | 0 | 
| 3 | 2002/8/8 | 0 | 
| 3 | 2002/8/9 | 0 | 
| 3 | 2002/8/10 | 0 | 
| 3 | 2002/8/11 | 0 | 
| 3 | 2002/8/12 | 0 |