我正在尝试将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 group
本身并不能解决问题。
有什么想法吗?
答案 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 |
+----------------------------+