stata - 事件发生时保留第一条记录
问题描述
我在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 id,如果没有事件发生,则获取最后一个报告 foreach 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)
以前的线程在这里。
推荐阅读
- python - 神经网络正则化器 L1 和 L2
- python - 如果列表不存在,附加值或创建并插入?
- c# - Visual Studio 中的 Crystal Reports x86 + OLEDB x64
- karate - 空手道 - 用 if 条件替换值
- json - Powershell export-csv 显示 System.Object[],"System.Object[]"
- excel - 对象_worksheet的方法范围失败-但当我点击“运行子(F5)”时有效
- python - scrapy(python)中的无效xpath
- python-3.x - 如何使用 python 和 BeautifulSoup 更新 xml 文件
- r - 执行许多模拟以避免for循环
- css - 当我单击选择时,滚动条空间消失并且所有页面内容都向右移动