Stata 根据最近的I/O观测值生成变量

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 .

我的数据目前在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         .        .        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