Панель Stata: как присвоить значение группе, слить?

У меня есть группа фирм (id, год). Каждая фирма также принадлежит к определенной стране. Теперь я хотел бы добавить временные ряды ВВП по странам.

Целью является то, что, например, каждой фирме из США присваивается ВВП США в этом году и т. д.

Может ли кто-нибудь сказать мне, как это сделать? Есть ли способ использовать команду merge здесь?

1
nl ja de
Не могли бы вы опубликовать свои первые попытки с помощью merge , используя три уникальных идентификатора ( country , id , year )), чтобы узнать, работает отлично? Попробуйте merge` в режиме 1: m .
добавлено автор Fr., источник
Хорошо. Как насчет m: m с указанием страны и года? Учитывая, что все фирмы того же года и страны получат одинаковый показатель ВВП, эта информация должна быть достаточной.
добавлено автор Fr., источник
Вам не нужен id , просто country и year - см. Мой ответ ниже.
добавлено автор StasK, источник
проблема заключается в том, что временные ряды gdp не имеют идентификатора идентификатора, а только страны и года. поэтому stata дает мне ошибку, когда я использую merge 1: m.
добавлено автор Immo, источник

1 ответы

Поскольку файл справки для merge справедливо заявляет, merge m : m - это неправильный подход большую часть времени. Если у вас установлены данные фирмы как

clear
input country id year profit
1 1 2010 152
1 1 2011 -8
1 2 2010 1090
2 3 2010 502
2 3 2011 -15
end
tempfile firms
save `firms'

и файл страны

clear
input country year gdp
1 2010 287582354
1 2011 298723412
2 2010 89734531
2 2011 87340120
end
tempfile gdp
save `gdp'

затем, начиная с вашего файла фирмы , вы можете объединить результаты следующим образом:

use `firms', clear
merge m:1 country year using `gdp'
* check results
tab _merge
assert _merge == 3
* clean up the remaining mess
drop if _merge !=3
drop _merge

Это должно произвести вывод, который выглядит

Result                           # of obs.
-----------------------------------------
not matched                             0
matched                                 5  (_merge==3)
-----------------------------------------

и если у вас нет ничего, что не было сопоставлено (на мой взгляд, это проверка и очистка кода), вам должно быть хорошо идти.

1
добавлено
Добро пожаловать.
добавлено автор StasK, источник
Большое спасибо, это работает отлично! у меня была догадка о том, что m: m не был способ пойти, а просто нужен отличный пример, как ваш, чтобы понять команду слияния.
добавлено автор Immo, источник