如何补全时间间隔大于1的Stata面板数据缺失时间观测值
Stata隔年面板补全偶数年观测值解决方案
你提到的expand命令确实不适用于该场景,expand主要用于重复生成现有观测,无法自动生成缺失的年份维度,以下是两种可行的实现方法:
方法1:使用fillin命令(最简方案)
fillin是Stata专门用于补全两个变量所有组合的专用命令,完全适配你的平衡面板补全需求,代码如下:
* 加载你现有的奇数年原始数据 input id year var 1 2011 23 1 2013 12 1 2015 11 2 2011 44 2 2013 42 2 2015 13 end * 自动补全所有id和year的组合,缺失变量自动赋值为. fillin id year * 可选操作:删除fillin生成的辅助标记变量_fillin,不影响后续分析 drop _fillin * 按id和年份排序即可得到目标格式数据 sort id year
方法2:自定义年份范围补全(通用方案)
如果后续你需要调整补全的年份范围(比如延伸到2010、2016年等),可以用交叉合并的方式实现,代码如下:
* 第一步:提取原始数据中所有唯一的id值并暂存 preserve keep id duplicates drop tempfile id_list save `id_list' restore * 第二步:生成你需要的完整年份序列并暂存 clear set obs 5 gen year = 2010 + _n tempfile year_list save `year_list' * 第三步:交叉合并id和年份,得到所有id*年份的全量组合 use `id_list', clear cross using `year_list' * 第四步:匹配原始数据中的变量值 merge 1:1 id year using 你的原始奇数年数据集路径, nogen
补全后的数据已经是id-年份维度的平衡面板,直接使用merge 1:1 id year using 偶数年数据集路径即可完成你需要的合并操作。
内容的提问来源于stack exchange,提问作者Marcelo Avila
相关产品推荐
相关产品推荐

