- * 假设你的组别变量为 group
- * 假设你的变量1为 x
- * 现在要生成变量2为 y, 使得 y是x的按组别移动求和,但当遇到x为0是重新求和
- *** 1. 生成一个新的分类变量group2,把group根据x==0的位置划分为更小的group。
- *** 那么我们需要的y就是在group内部,再根据group2进行分组移动求和即可。
- cap drop group2
- gen group2 = .
- replace group2 = 1 in 1
- forvalues i = 2 / `=_N' {
- if group[`i'] != group[`i' - 1] {
- replace group2 = 1 in `i'
- }
- else {
- if x[`i'] != 0 {
- replace group2 = group2[`i' - 1] in `i'
- }
- else {
- replace group2 = group2[`i' - 1] + 1 in `i'
- }
- }
- }
- *** 2. 根据两个group变量分组求和生成 y
- bys group group2 : gen y = sum(x)


雷达卡




已经解决了,谢谢您~
京公网安备 11010802022788号







