1126 3

[编程问题求助] 数据清洗-stata如何在分组对应变量出现0的时候重新累加 [推广有奖]

  • 3关注
  • 1粉丝

等待验证会员

已卖:1份资源

博士生

63%

还不是VIP/贵宾

-

威望
0
论坛币
6033 个
通用积分
0.0786
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
3969 点
帖子
158
精华
0
在线时间
475 小时
注册时间
2018-6-1
最后登录
2026-1-6

楼主
小小小小的我鸟 发表于 2023-5-11 13:01:06 |AI写论文
1000论坛币
求助~ 在分组的前提下,变量2对应的分别是变量1的累计求和,但是变量1变成0的时候,变量2也会随之变成0,并且之后又重新进行累计求和,下图为案例数据,想要求助计算变量2的stata代码~感谢!


如图

最佳答案

关键词:Stata tata 案例数据
相关内容:stata数据清洗

沙发
Liss_H 学生认证  发表于 2023-5-11 13:01:07
  1. * 假设你的组别变量为 group
  2. * 假设你的变量1为 x
  3. * 现在要生成变量2为 y, 使得 y是x的按组别移动求和,但当遇到x为0是重新求和

  4. *** 1. 生成一个新的分类变量group2,把group根据x==0的位置划分为更小的group。
  5. ***    那么我们需要的y就是在group内部,再根据group2进行分组移动求和即可。
  6. cap drop group2
  7. gen group2 = .

  8. replace group2 = 1 in 1
  9. forvalues i = 2 / `=_N' {
  10.         if group[`i'] != group[`i' - 1] {
  11.                 replace group2 = 1 in `i'
  12.         }
  13.         else {
  14.                 if x[`i'] != 0 {
  15.                         replace group2 = group2[`i' - 1] in `i'
  16.                 }
  17.                 else {
  18.                         replace group2 = group2[`i' - 1] + 1 in `i'
  19.                 }
  20.         }
  21. }

  22. *** 2. 根据两个group变量分组求和生成 y
  23. bys group group2 : gen y = sum(x)
复制代码

藤椅
Liss_H 学生认证  发表于 2023-5-15 15:21:25
Liss_H 发表于 2023-5-15 15:17
刚才回答中使用了bys (by 复合了sort)
如果你的数据中group是从小到大排列的,使用 by  或者 bys, 没有区别。
否则的话使用bys可能会对数据进行排序,可能对计算结果产生影响。by命令可能更保险一些。
你的数据的顺序会影响你的计算结果。

板凳
小小小小的我鸟 发表于 2023-5-22 17:36:04
Liss_H 发表于 2023-5-15 15:17
现在才看到,超级感谢哇已经解决了,谢谢您~

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 16:06