首页 > 解决方案 > 合并重叠的分类变量

问题描述

我正在尝试将 Stata 中的两个分类变量(比如var1var2)“组合”成一个新的(也是分类的)变量(比如res)。

下面的示例说明了我要实现的目标:

var1    var2    res
1       1       A
1       2       A
2       1       A
3       3       B
4       2       A
5       4       D

这个例子所做的是将所有类别var1var2那个“重叠”结合起来。

在这里,这对var1 == 1var2 == 1最初形成一个群 ( res== A)。包含var1 == 1or的所有其他对应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单独不削减它。

有任何想法吗?

标签: stata

解决方案


var1如果 的值相同,听起来您想进一步分组var2。如果是这种情况,那么您可以使用我编写的名为group_idSSC 的程序。要安装它,请在 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 |
     +----------------------------+

推荐阅读