#stata #data-wrangling
#stata #перебор данных
Вопрос:
В настоящее время мои данные организованы в 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
gen net_imports = (imports_2017-foodexport_2017)
gen net_imports_toGDP = (net_imports/gdpcurrent_2017)
Код работает хорошо, но создает переменную только в том случае, если у страны есть данные за 2017 год, но я хотел бы по существу создать отношение импорта к ВВП на основе самых последних доступных наблюдений для ВВП.
Ответ №1:
Вы можете просто заменить недостающие данные следующим образом:
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)
help reshape
Подробнее см. в команде. gdp_
Etc. — это заглушки, которые будут именами новых переменных и i(Country)
задают идентификатор.
Затем вы можете заполнить вперед в каждом наблюдении, используя переменные временных рядов:
encode Country, generate(Country_num
xtset Country_num _j
replace gdp_=l.gdp_ if mi(gdp_) amp; !mi(l.gdp_)
Комментарии:
1. Обратите внимание, что я делаю некоторые предположения о вашем фактическом наборе данных, поскольку описание данных неполное.
2. Я добавил информацию о команде reshape для справки.
3.
reshape long
Здесь действительно настоятельно рекомендуется использовать A .