Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于查找的Stata替代方案_Stata - Fatal编程技术网

用于查找的Stata替代方案

用于查找的Stata替代方案,stata,Stata,我有一个包含以下变量的大型Stata数据集:年份,州,家庭id,个人id,伴侣id,以及种族。以下是我的数据示例: year state household_id individual_id partner_id race 1980 CA 23 2 1 3 1980 CA 23 1 2 1 1990 NY 43

我有一个包含以下变量的大型Stata数据集:
年份
家庭id
个人id
伴侣id
,以及
种族
。以下是我的数据示例:

 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)
我现在要做的是创建类似于Excel中的
vlookup
的东西:对于每个列,在本地保存id\u合作伙伴,在id\u用户中找到它,找到他们的种族,并将其与原始用户的种族进行比较

我想应该是这样的

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

我想你不需要这么笼统的东西。正如您所意识到的,关于标识符的信息足以找到情侣,而这反过来又允许对每对情侣中的人进行
种族的比较

在下面的代码中,
\u 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 |
     +-------------------------------------------------------------------------------------+
清除
输入年份str2州住户身份证个人身份证合作伙伴身份证种族
1980年CA 23 2 1 3
1980年CA 23 1 2 1
1990年纽约43421
1990年纽约43 2 4 1
结束
生成偶id=cond(个体id<伙伴id,字符串(个体id)+///
“”+字符串(合作伙伴id),字符串(合作伙伴id)+///
“”+字符串(单个\u id))
bysort state year household\u id夫妇\u id:generate mixed=种族[1]!=如果_N==2,则为竞赛[2]
列表,sepby(住户id)缩写(15)
+-------------------------------------------------------------------------------------+
|年份州家庭\身份证个人\身份证伴侣\身份证种族夫妇\身份证混合|
|-------------------------------------------------------------------------------------|
1. | 1980年CA 23 2 1 3 1 2 1|
2. | 1980年加利福尼亚州23121|
|-------------------------------------------------------------------------------------|
3. | 1990年纽约4342140|
4. | 1990年纽约州43 2 4 1 2 4 0|
+-------------------------------------------------------------------------------------+

这一想法记录在。该链接允许免费访问
pdf
文件

感谢您提供的数据示例,但是
dataex
比您做的更进一步,让每个阅读线程代码的人在自己的状态中复制示例数据。