我在组合项目的数据集方面遇到了困难。我们的主要数据集由个别评委组织。它是一个属性数据集。
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
的每种情况,都会添加对该案例的观察,创建如下所示的数据集。 / p>
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
标识的变量。
答案 0 :(得分:0)
您的示例很清楚,但更好的是将它们作为代码提供,不需要工程编辑来移除脚手架。请参阅SSC的dataex
(ssc inst 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) |
+---------------------------------------------------+