Stata 组合重叠的分类变量

Stata 组合重叠的分类变量,stata,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==

我试图将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
var2==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集团
本身并不能解决这一问题


有什么想法吗

如果
var2
的值相同,听起来您希望进一步分组
var1
。如果是这样,那么您可以使用我编写的名为
group\u 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 |
     +----------------------------+

是的,这似乎是最好的解决方法。