查找的Stata替代品

时间:2019-04-22 16:48:41

标签: stata

我有一个很大的Stata数据集,其中包含以下变量:yearstatehousehold_idindividual_idpartner_id和{{1} }。这是我的数据示例:

race

请注意,在上表中,第1列和第2列相互结合。 我想创建一个变量,如果该人是异族通婚,则该变量为1。

第一步,我使用了以下代码

 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

此代码运行良好,但在某些情况下给出了错误的结果。作为替代方案,我使用

创建了一个字符串变量来标识每个用户及其伙伴。
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) 在Excel中的操作:对于每一列,将id_partner保存在本地,在id_user中找到它并查找他们的种族,并将其与原始用户。

我猜应该是这样的吗?

vlookup

预期输出应为

gen inter2==1 if (find race[idpartner]) == (race[iduser])

1 个答案:

答案 0 :(得分:2)

我认为您不需要任何一般性的要求。如您所知,有关标识符的信息足以找到夫妻,这反过来又可以比较每对夫妻中的人race

_N == 2下面的代码中,是为了捕获数据错误,例如一个伙伴,但另一个不是数据集中的观察值,或者一个伙伴的重复或两者兼而有之。

clear 

input year  str2 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 
 end 

generate couple_id = cond(individual_id < partner_id, string(individual_id) + ///
                          " " + string(partner_id), string(partner_id) + ///
                          " " + string(individual_id)) 

bysort state year household_id couple_id : generate mixed = race[1] != race[2] if _N == 2 

list, sepby(household_id) abbreviate(15)

     +-------------------------------------------------------------------------------------+
     | year   state   household_id   individual_id   partner_id   race   couple_id   mixed |
     |-------------------------------------------------------------------------------------|
  1. | 1980      CA             23               2            1      3         1 2       1 |
  2. | 1980      CA             23               1            2      1         1 2       1 |
     |-------------------------------------------------------------------------------------|
  3. | 1990      NY             43               4            2      1         2 4       0 |
  4. | 1990      NY             43               2            4      1         2 4       0 |
     +-------------------------------------------------------------------------------------+

此想法记录在this article中。该链接可免费访问pdf文件。