确定第一个事件或最后一个非事件 [英] Identify first event or last non-event

查看:10
本文介绍了确定第一个事件或最后一个非事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆