【问题标题】:Keep first record when event occurrs事件发生时保留第一条记录
【发布时间】:2018-11-07 11:31:47
【问题描述】:

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

【问题讨论】:

    标签: stata data-cleaning recode longitudinal


    【解决方案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) 
    

    之前的话题是here

    【讨论】:

    • ID 5 在 TIME 10 有 EVENT 1,但在 TIME 20 也有 EVENT 2。如何单独保存这些信息?例如,如果 1 是 CITATION,2 是 EXPELLED。此示例显示 ID 5 获得了引用,但他们获得了 EXPELLED 被忽略。如果为事件顺序生成指标变量确实很重要,我该如何合并这些信息? @尼克考克斯
    • 这听起来是一个完全不同的问题,您应该通过 (1) 一个新线程 (2) 示例数据 (3) 您对代码的尝试来支持我们。
    • 如果不是取最后一个响应而是取最后一个响应等于 0,那么在上面的这个例子中呢?
    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多