stata - 合并重叠的分类变量
问题描述
我正在尝试将 Stata 中的两个分类变量(比如var1
和var2
)“组合”成一个新的(也是分类的)变量(比如res
)。
下面的示例说明了我要实现的目标:
var1 var2 res
1 1 A
1 2 A
2 1 A
3 3 B
4 2 A
5 4 D
这个例子所做的是将所有类别var1
和var2
那个“重叠”结合起来。
在这里,这对var1 == 1
和var2 == 1
最初形成一个群 ( res== A
)。包含var1 == 1
or的所有其他对应var2 == 1
属于同一组(因此res== A
在第 2 行和第 3 行中)。因为在第 2 行,我们有var2==2
,任何包含 contains 的对var2==2
都应该属于同一个组。这就是为什么在第 4 行res== A
。
看待这个问题的另一种方法是使用以下矩阵:
| 1 2 3 4
-----------------------
1 | 1 1
2 | 1
3 | 1
4 | 1
5 | 1
因为元素[1,1]
不为空(或零),所以行1
和列中的所有元素1
必须属于同一组。因为[1,2]
不是空的,所以对于 row 1
, column也是如此2
。等等等等。您决定从哪一行/哪一列开始并不重要。
egen group
单独不削减它。
有任何想法吗?
解决方案
var1
如果 的值相同,听起来您想进一步分组var2
。如果是这种情况,那么您可以使用我编写的名为group_id
SSC 的程序。要安装它,请在 Stata 的命令窗口中输入:
ssc install group_id
这是一个如何使用它的示例:
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(var1 var2) str1 res
1 1 "A"
1 2 "A"
2 1 "A"
3 3 "B"
4 2 "A"
5 4 "D"
end
gen long wanted = var1
group_id wanted, matchby(var2)
list, sep(0)
结果:
. list, sep(0)
+----------------------------+
| var1 var2 res wanted |
|----------------------------|
1. | 1 1 A 1 |
2. | 1 2 A 1 |
3. | 2 1 A 1 |
4. | 3 3 B 3 |
5. | 4 2 A 1 |
6. | 5 4 D 5 |
+----------------------------+