我在组合项目的数据集时遇到了困难。我们的主要数据集是由个人评委组织的。它是一个属性数据集。
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我们希望通过judge将案例数据库merge到属性数据库中。因此,对于j1、j2或j3中出现judge的每种情况,都会添加该情况的观察值,以创建如下所示的数据集。
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标识。
发布于 2016-12-15 06:58:41
您的示例很清楚,但更好的做法是将它们表示为不需要工程编辑即可移除脚手架的代码。请参阅来自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) |
+---------------------------------------------------+https://stackoverflow.com/questions/41153356
复制相似问题