2014-06-11 28 views
1

我在Stata中擁有面板數據集(國家 - 年份)。例如,我在1990,1991年就擁有國內生產總值,2010年爲許多國家。如何在Stata中輕鬆定義面板中的常量變量

我想定義一個變量「2006年GDP」,它存在於所有年份並且包含2006年的GDP值。

我現在正在做這工作的方式不過是一個笨拙,但等我希望有人將有一個更好的主意:

qui gen gdp2006=. 

    replace gdp2006=gdp if year==2006 

    forval t=2007/2010 { 
     sort country year 
     qui replace gdp2006=gdp2006[_n-1] if year==`t'&country[_n-1]==country 
    } 
    forval t=2005(-1)1990 { 
     sort country year 
     qui replace gdp2006=gdp2006[_n+1] if year==`t'&country[_n+1]==country 
    } 

謝謝!

回答

2

您可以在同一行

egen gdp2006 = mean(gdp/(year == 2006)), by(country) 

(year == 2006)評估做到這一點爲1或0,所以表達式

gdp/(year == 2006) 

評估爲gdpyear是2006年,否則丟失。在計算每個國家的平均值時忽略缺失。

有關更廣泛和更系統的討論,請參閱http://www.stata-journal.com/article.html?article=dm0055(本帖子將在幾周內向所有人開放)。

P.S.你知道的技術可以縮短你的代碼:

gen gdp2006 = gdp if year == 2006 
bysort country (gdp2006): replace gdp2006 = gdp2006[_n-1] if _n > 1 
0
gen gdp2006_temp = gdp if year == 2006 
bys country : egen gdp2006 = total(gdp2006_temp) 
drop gdp2006_temp 

這裏的關鍵是使用by:前綴,而且total()egen函數忽略遺漏值的事實。