You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stata中合并相同ID观测值:检测时段衔接并聚合收入

Stata 实现连续时段收入聚合与完整年度标记

核心步骤与代码

  1. 按ID和时间排序
    确保同一ID下的观测按时间顺序排列,才能正确匹配前后时段:

    sort id period_begin period_end
    
  2. 生成连续时段分组标识
    同一ID内,若当前观测的period_begin等于上一观测的period_end,则归为同一组:

    bysort id: gen group = sum(period_begin != period_end[_n-1])
    // 解释:sum()会累加满足条件的次数,当当前begin≠上一end时组号+1,连续时段自动归为同组
    
  3. 聚合组内收入与合并时段
    按ID和分组计算总收入,以及合并后的时段起止:

    bysort id group: egen total_income = sum(income)
    bysort id group: egen merged_begin = min(period_begin)
    bysort id group: egen merged_end = max(period_end)
    
  4. 标记完整年度
    根据合并后时段的跨度判断是否为完整年度(需根据你的时间格式调整逻辑):

    • 若时间为年度数值(如2020、2021):
      gen is_full_year = (merged_end - merged_begin == 1)
      
    • 若时间为日期格式(如%td):
      gen is_full_year = (difftime(merged_end, merged_begin, "year") == 1)
      
  5. 保留每组唯一观测
    去除组内重复观测,只保留聚合后的结果:

    bysort id group: keep if _n == 1
    // 可按需保留变量,比如:
    keep id merged_begin merged_end total_income is_full_year
    

注意事项

  • 提前处理缺失值:若period_begin或period_end有缺失,需先清理:
    drop if missing(period_begin, period_end)
    
  • 时间格式统一:确保period_begin和period_end为同一格式(数值/日期),避免匹配错误。

内容的提问来源于stack exchange,提问作者David Dai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:11:05