在Stata中,我有一个面板数据集,其中包含面板标识符和时间变量(以及感兴趣的指标)。我想通过面板ID生成一个变量,该变量等于特定年份范围内其中一个度量的平均值。执行以下操作可以实现我想要的功能,但只会将变量填充到我限制它的年份。我希望这些年来能够填充这个结果。我有陪审团操纵了一个涉及对数据进行排序的解决方案,但我想检查是否有更优雅的方法。
sort id year
egen x_natural = mean(x) if year >= 2005 & year <= 2007, by(id)
sort id x_natural year
replace x_natural = x_natural[_n-1] if id == id[_n-1]
答案 0 :(得分:4)
一种方法是
egen x_natural = mean(x / (year >= 2005 & year <= 2007)), by(id)
而另一个是
egen x_natural = mean(cond(year >= 2005 & year <= 2007, x, .)), by(id)
顺便说一下,
year >= 2005 & year <= 2007
可以使用
计算inrange(year, 2005, 2007)
有关该地区的相当系统的介绍性调查,请参阅http://www.stata-journal.com/article.html?article=dm0055,现在所有人都可以访问.pdf。 直接为此,请参阅http://www.stata-journal.com/sjpdf.html?articlenum=dm0055