У меня большой набор данных Stata, который содержит следующие переменные: year
, state
, household_id
, individual_id
, partner_id
и race
. Вот пример моих данных:
year state household_id individual_id partner_id race
1980 CA 23 2 1 3
1980 CA 23 1 2 1
1990 NY 43 4 2 1
1990 NY 43 2 4 1
Обратите внимание, что в приведенной выше таблице столбцы 1 и 2 женаты друг на друге.
Я хочу создать переменную, равную единице, если человек находится в межрасовом браке.
В качестве первого шага я использовал следующий код
by household_id year: gen inter=0 if race==race[partner_id]
replace inter=1 if inter==.
Этот код работал хорошо, но в некоторых случаях дал неправильный результат. В качестве альтернативы я создал строковую переменную, идентифицирующую каждого пользователя и его партнера, используя
gen id_user=string(household_id)+"."+string(individual_id)+string(year)
gen id_partner=string(household_id)+"."+string(partner_id)+string(year)
Теперь я хочу создать что-то похожее на то, что vlookup
делает в Excel: для каждого столбца локально сохраните id_partner, найдите его в id_user, найдите расу и сравните ее с расой оригинала. пользователь.
Полагаю, что-то вроде этого?
gen inter2==1 if (find race[idpartner]) == (race[iduser])
Ожидаемый результат должен быть таким:
year state household_id individual_id partner_id race inter2
1980 CA 23 2 1 3 1
1980 CA 23 1 2 1 1
1990 NY 43 4 2 1 0
1990 NY 43 2 4 1 0