合并重叠的类别变量

时间:2018-07-30 20:21:49

标签: stata

我正在尝试将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 == 1var2 == 1的所有其他对都应属于同一组(因此,第2行和第3行中的res== A)。因为在第2行中我们有var2==2,所以任何包含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]不为空,因此对于行1的列2也是一样。等等等等。您决定从哪个行/列开始都没关系。

egen group本身并不能解决问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果var1的值相同,您想将var2进一步分组的声音。如果是这样,则可以使用我编写的名为group_id的程序,该程序可以从SSC获得。要安装它,请在Stata的Command窗口中键入:

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 |
     +----------------------------+