我很难组合项目的数据集。我们的主要数据集由个人法官组织。这是一个属性数据集。
judge
j | x | y | z
----|----|----|----
1 | 2 | 3 | 4
2 | 5 | 6 | 7
第二个数据集是一个案例数据库。每个观察都是一个案例,法官可以出现在三个变量之一中。
case
case | j1 | j2 | j3 | year
-----|----|----|----|-----
1 | 1 | 2 | 3 | 2002
2 | 2 | 3 | 1 | 1997
我们希望将情况数据库 merge
匹配到属性数据库中,与judge
匹配。因此,对于每种情况,judge
出现在j1
,j2
或j3
中时,将添加对该情况的观察结果,创建一个看起来像下面的数据集。
combined
j | x | y | z | case | year
---|----|----|----|-------|--------
1 | 2 | 3 | 4 | 1 | 2002
1 | 2 | 3 | 4 | 2 | 1997
2 | 5 | 6 | 7 | 1 | 2002
2 | 5 | 6 | 7 | 2 | 1997
我最好的猜测是使用
rename j1 j
merge 1:m j using case
rename j j1
rename j2 j
merge 1:m j using case
但是,我不确定这会起作用,尤其是因为合并数据集具有j
标识可能发生的三个可能的变量。
您的示例很清楚,但最好将它们作为代码出现,而这些代码不需要工程编辑即可删除脚手架。请参阅SSC(ssc inst dataex
)的dataex
。
我认为这是丢失的reshape
的情况。
clear
input j x y z
1 2 3 4
2 5 6 7
end
save judge
clear
input case j1 j2 j3 year
1 1 2 3 2002
2 2 3 1 1997
end
reshape long j , i(case) j(which)
merge m:1 j using judge
list
+-------------------------------------------------------+
| case which j year x y z _merge |
|-------------------------------------------------------|
1. | 1 1 1 2002 2 3 4 matched (3) |
2. | 2 3 1 1997 2 3 4 matched (3) |
3. | 2 1 2 1997 5 6 7 matched (3) |
4. | 1 2 2 2002 5 6 7 matched (3) |
5. | 2 2 3 1997 . . . master only (1) |
|-------------------------------------------------------|
6. | 1 3 3 2002 . . . master only (1) |
+-------------------------------------------------------+
drop if _merge < 3
list
+---------------------------------------------------+
| case which j year x y z _merge |
|---------------------------------------------------|
1. | 1 1 1 2002 2 3 4 matched (3) |
2. | 2 3 1 1997 2 3 4 matched (3) |
3. | 2 1 2 1997 5 6 7 matched (3) |
4. | 1 2 2 2002 5 6 7 matched (3) |
+---------------------------------------------------+