我正在使用Stata 13。
当一堆其他变量都不等于0时,我想创建一个等于0的变量;当一堆其他变量中的一个变量等于1时,此变量为1;当一堆其他变量的两个变量为1时,它为2;当一堆其他变量的三个变量为1时,它为3;等等。
有什么建议吗?
答案 0 :(得分:0)
您的条件并非相互排斥。需要分开两个标准。
当一堆其他变量都不等于0时变量为0.
当一堆其他变量中的一个变量等于1时,变量为1; 2当两个变量为1时; 3当三个变量为1时;等。
条件#2只计算1秒,如下所示:
clear
input x1 x2 x3
0 0 1
0 1 1
1 1 1
end
egen count1 = anycount(x1 x2 x3), value(1)
list
+-----------------------+
| x1 x2 x3 count1 |
|-----------------------|
1. | 0 0 1 1 |
2. | 0 1 1 2 |
3. | 1 1 1 3 |
+-----------------------+
对于适量的变量,条件#1可以通过这种方式完成:
gen none0 = inlist(0, x1, x2, x3)
list
+-------------------------------+
| x1 x2 x3 count1 none0 |
|-------------------------------|
1. | 0 0 1 1 1 |
2. | 0 1 1 2 1 |
3. | 1 1 1 3 0 |
+-------------------------------+
在评论中计算1的rowtotal()
方法仅适用于只有1,0或缺失的值,这可能适用于您的数据但不是规定的条件。