Ведите первую запись, когда происходит событие
У меня есть следующие данные в 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
Цель состоит в том, чтобы взять первый идентификатор foreach строки, когда происходит событие, и, если событие не происходит, взять последний идентификатор foreach отчета. Вот пример данных, которые я надеюсь получить
* 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
1 ответ
Решение
Определение события выглядит так: 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)
Предыдущая тема была здесь.