Stata 事件发生时保留第一条记录

Stata 事件发生时保留第一条记录,stata,data-cleaning,recode,longitudinal,Stata,Data Cleaning,Recode,Longitudinal,我在Stata中有以下数据: clear * Input data input grade id exit time 1 1 . 10 2 1 . 20 3 1 2 30 4 1 0 40 5 1 . 50 1 2 0 10 2 2 0 20 3 2 0 30 4 2 0 40 5 2 0 50 1 3 1 10 2 3 1 20 3 3 0

我在Stata中有以下数据:

clear

* Input data
input grade id exit time
1   1   .   10
2   1   .   20
3   1   2   30
4   1   0   40
5   1   .   50
1   2   0   10
2   2   0   20
3   2   0   30
4   2   0   40
5   2   0   50
1   3   1   10
2   3   1   20
3   3   0   30
4   3   .   40
5   3   .   50
1   4   .   10
2   4   .   20
3   4   .   30
4   4   .   40
5   4   .   50
1   5   1   10
2   5   2   20
3   5   1   30
4   5   1   40
5   5   1   50

end
目标是在事件发生时获取每个id的第一行,如果没有事件发生,则获取每个id的最后一个报告。下面是我希望获得的数据示例

* Input data
input grade id  exit    time
3   1   2   30
5   2   0   50
1   3   1   10
5   4   .   50
1   5   1   10
end

事件的定义似乎是
exit
不是零或缺失。如果是这样的话,那么您所需要做的就是调整我前面答案中的代码:

bysort id (time): egen when_first_e = min(cond(exit > 0 & exit < ., time, .))
by id: gen tokeep = cond(when_first_e == ., time == time[_N], time == when_first_e) 
bysort id(时间):当第一次=分钟时开始(秒(退出>0&退出<,时间,))
按id:gen tokeep=cond(当第一次时=,时间==时间[,时间==第一次时)

上一个线程是。

ID5在时间10有事件1,但在时间20也有事件2。如何单独保存这些信息?例如,如果1是引证,2被开除。本例显示ID 5被引用,但他们被开除被忽略。如果为事件顺序生成指标变量非常重要,我如何合并这些信息@Nick Cox这听起来是一个完全不同的问题,您应该支持我们:(1)一个新线程(2)示例数据(3)您的代码尝试。在上面的示例中,如果不是接受最后一个响应,而是希望接受最后一个响应等于0,该怎么办?