在Stata中区分ID组间首次事件与后续事件的技术问询
解决Stata中按ID1-ID2组合区分首次/后续事件的问题
你的核心需求是以ID1和ID2的组合为分组单位,区分组内的首次事件与后续事件。原命令的问题在于分组逻辑错误,且未按事件发生的时间(Year)排序,导致无法正确识别组内事件的先后顺序。
正确实现步骤
- 确定分组与排序规则:
需同时按ID1和ID2分组,并且组内按Year升序排序,这样才能确保事件的先后顺序是按时间逻辑排列的。 - 生成事件标记变量:
- 若只需标记“是否为首次事件”,可以生成二元变量:
该命令会在每个ID1-ID2组内,将按Year排序后的第一个事件(Event=1)标记为bysort ID1 ID2 (Year): gen is_first = (_n == 1) if Event == 11,后续事件标记为0,非事件行(若有的话)会显示缺失值。 - 若需要记录每个事件在组内的顺序(比如1=首次,2=第二次,以此类推),可以生成顺序变量:
bysort ID1 ID2 (Year): gen event_order = _n if Event == 1
- 若只需标记“是否为首次事件”,可以生成二元变量:
运行效果展示
以你提供的样本数据为例,运行第一个命令后,数据会变成:
ID1 ID2 Event Year is_first 1 2 1 2021 1 1 2 1 2022 0 2 3 1 2021 1 2 3 1 2022 0 2 3 1 2023 0
原命令问题说明
你之前使用的bys ID1 (ID2): gen first=_n if Event==1存在两个关键问题:
- 分组仅按
ID1,未将ID2纳入分组逻辑,会导致同一ID1下不同ID2的事件被混在一起排序; - 按
ID2排序而非Year,无法反映事件发生的时间先后,自然无法正确识别组内的首次事件。
内容的提问来源于stack exchange,提问作者user21415223
相关产品推荐
相关产品推荐

