如何在Stata面板数据中创建2019w2-2022w27的自定义周变量
Stata面板数据生成个体独立周变量解决方案
问题根源:你之前的代码使用全局行号
_n,导致跨个体时周数连续累加,而非每个个体重新从起始周开始计数。核心解决方案:按个体(id)分组,使用组内行号
_n生成周变量,确保每个个体的周数从2019w2重新开始:
// 先按id排序,保证组内观测顺序正确 sort id // 按id分组生成周变量 bysort id: gen weekyr = tw(2019w2) + _n - 1 // 设置周格式 format weekyr %tw
- 额外校验步骤(可选):如果不确定每个个体的观测数是否正好覆盖2019w2到2022w27的所有周,可以先计算目标周数范围,再检查数据:
// 计算起始周、结束周的数值及总周数 local start_week = tw(2019w2) local end_week = tw(2022w27) local total_weeks = `end_week' - `start_week' + 1 // 生成每个个体的观测数 bysort id: gen obs_per_id = _N // 查看观测数不符合要求的个体 list id obs_per_id if obs_per_id != `total_weeks'
如果存在观测数不匹配的个体,需要先补充缺失周的观测或删除多余观测,才能保证生成的周变量正好覆盖目标范围。
内容的提问来源于stack exchange,提问作者k119919
相关产品推荐
相关产品推荐

