确定第一个事件或最后一个非事件 [英] Identify first event or last non-event
本文介绍了确定第一个事件或最后一个非事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在Stata中有以下数据:
clear
* Input data
input float id str7 event time
id event time
1 "." 10
1 "." 20
1 "1" 30
1 "0" 40
1 "." 50
2 "0" 10
2 "0" 20
2 "0" 30
2 "0" 40
2 "0" 50
3 "1" 10
3 "1" 20
3 "0" 30
3 "." 40
3 "." 50
4 "." 10
4 "." 20
4 "." 30
4 "." 40
4 "." 50
5 "1" 10
5 "1" 20
5 "1" 30
5 "1" 40
5 "1" 50
end
以下是我希望获得的数据:
* Input data
input float id str7 event time
id1 event1 time1
1 1 30
2 0 50
3 1 10
4 . 50
5 1 10
end
我的目标是获取等于1
的每个id
事件的第一行。如果id
在任何时间都没有事件,则我要报告报告的上次时间。
推荐答案
以下适用于我:
replace event = "-1" if event == "1"
bysort id (event time): generate tag1 = event[_n==1] == "-1"
bysort id (event time): generate tag2 = event[_n==_N] == "0"
bysort id (event time): generate tag3 = event[_n==_N] == "."
replace event = "1" if event == "-1"
keep if tag1 == 1 | tag2 == 1 | tag3 == 1
list
+----------------------------------------+
| id event time tag1 tag2 tag3 |
|----------------------------------------|
1. | 1 1 30 1 0 0 |
2. | 2 0 50 0 1 0 |
3. | 3 1 10 1 0 0 |
4. | 4 . 50 0 0 1 |
5. | 5 1 10 1 0 0 |
+----------------------------------------+
这篇关于确定第一个事件或最后一个非事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文