Stata 根据最近的I/O观测值生成变量
我的数据目前在Stata中组织如下:Stata 根据最近的I/O观测值生成变量,stata,data-wrangling,Stata,Data Wrangling,我的数据目前在Stata中组织如下: input str2 Country gdp_2015 gdp_2016 gdp_2017 imports_2016 imports_2017 exports_2016 "A" 11 12 13 5 6 8 5 "B" 11 .
input str2 Country gdp_2015 gdp_2016 gdp_2017 imports_2016 imports_2017 exports_2016
"A" 11 12 13 5 6 8 5
"B" 11 . . 5 6 10 5
"C" 12 13 . 5 6 8 5
end
replace gdp_2016 = gdp_2015 if mi(gdp_2016)
replace gdp_2017 = gdp_2016 if mi(gdp_2017)
代码运行良好,但仅当一个国家有2017年数据时才创建了一个变量,但我想根据最新的GDP观察数据,创建一个进口与GDP的比率。您可以简单地替换缺失的数据,如下所示:
input str2 Country gdp_2015 gdp_2016 gdp_2017 imports_2016 imports_2017 exports_2016
"A" 11 12 13 5 6 8 5
"B" 11 . . 5 6 10 5
"C" 12 13 . 5 6 8 5
end
replace gdp_2016 = gdp_2015 if mi(gdp_2016)
replace gdp_2017 = gdp_2016 if mi(gdp_2017)
但是,更通用的方法是首先将数据从宽改为长:
reshape long gdp_ imports_ exports_, i(Country)
有关该命令的更多详细信息,请参见帮助重塑
。gdp\uu
等是将作为新变量名的存根,i(国家)
设置标识符
然后,您可以使用时间序列变量在每个观测值内向前填充:
encode Country, generate(Country_num
xtset Country_num _j
replace gdp_=l.gdp_ if mi(gdp_) & !mi(l.gdp_)
请注意,我对您的实际数据集进行了一些猜测,因为数据的描述不完整。我添加了有关重塑命令的信息,以供参考。这里确实强烈建议使用
重塑long
。