使用Stata根据变量的组合类型生成新变量
Use Stata to generate new variable, based on combination types of variables
假设我有一个包含三个变量 a
、b
、c
和 5 个观察值的数据集。像下面这样:
a b c
1 0 1
1 1 1
0 1 0
0 1 1
1 0 0
现在我想生成一个名为 type
的新变量,它可能是变量 a
、b
和 c
的组合。具体来说,
type=1
如果 a=b=c=0
type=2
如果 a=c=0 & b=1
type=3
如果 a=b=0 & c=1
type=4
如果 a=0 & b=c=1
type=5
如果 a=1 & b=c=0
type=6
如果 a=b=1 & c=0
type=7
如果 a=c=1 & b=0
type=8
如果 a=b=c=1
我要获取的新数据集是:
a b c type
1 0 1 7
1 1 1 8
0 1 0 2
0 1 1 4
1 0 0 5
有什么通用的方法可以在 Stata 中实现这一点?如果 type
很大时也可以扩展,比如 100 种类型,那就更好了。非常感谢。
如果 type
的具体值无关紧要,egen
的 group
函数有效。
例如:
clear
input a b c
1 0 1
1 1 1
0 1 0
0 1 1
1 0 0
0 1 0
1 1 1
end
sort a b c // not necessary, but clearer presentation
egen type = group(a b c)
li
结果
+------------------+
| a b c type |
|------------------|
1. | 0 1 0 1 |
2. | 0 1 0 1 |
3. | 0 1 1 2 |
4. | 1 0 0 3 |
5. | 1 0 1 4 |
|------------------|
6. | 1 1 1 5 |
7. | 1 1 1 5 |
+------------------+
假设我有一个包含三个变量 a
、b
、c
和 5 个观察值的数据集。像下面这样:
a b c
1 0 1
1 1 1
0 1 0
0 1 1
1 0 0
现在我想生成一个名为 type
的新变量,它可能是变量 a
、b
和 c
的组合。具体来说,
type=1
如果a=b=c=0
type=2
如果a=c=0 & b=1
type=3
如果a=b=0 & c=1
type=4
如果a=0 & b=c=1
type=5
如果a=1 & b=c=0
type=6
如果a=b=1 & c=0
type=7
如果a=c=1 & b=0
type=8
如果a=b=c=1
我要获取的新数据集是:
a b c type
1 0 1 7
1 1 1 8
0 1 0 2
0 1 1 4
1 0 0 5
有什么通用的方法可以在 Stata 中实现这一点?如果 type
很大时也可以扩展,比如 100 种类型,那就更好了。非常感谢。
如果 type
的具体值无关紧要,egen
的 group
函数有效。
例如:
clear
input a b c
1 0 1
1 1 1
0 1 0
0 1 1
1 0 0
0 1 0
1 1 1
end
sort a b c // not necessary, but clearer presentation
egen type = group(a b c)
li
结果
+------------------+
| a b c type |
|------------------|
1. | 0 1 0 1 |
2. | 0 1 0 1 |
3. | 0 1 1 2 |
4. | 1 0 0 3 |
5. | 1 0 1 4 |
|------------------|
6. | 1 1 1 5 |
7. | 1 1 1 5 |
+------------------+