楼主: cha_cha
2877 2

[面板数据求助] stata单个变量分组按条件累加 求时间长度 [推广有奖]

  • 3关注
  • 1粉丝

已卖:1份资源

硕士生

79%

还不是VIP/贵宾

-

威望
0
论坛币
782 个
通用积分
1.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
225 点
帖子
66
精华
0
在线时间
252 小时
注册时间
2013-11-23
最后登录
2023-1-29

楼主
cha_cha 学生认证  发表于 2017-6-26 17:03:48 |AI写论文
7论坛币
样本如下:
id year own
1 1968 1
1 1969 1
1 1970 0
1 1971 1
1 1972 1
1 1973 1
2 1968 0
2 1969 1
2 1970 1
按照前两列排序。同一id,第三列如果为1,则按代码和年份逐年累加,如果第三列出现为0,则结束累加,当同一id第三列再次出现1时,重新开始累加。如id为1,希望得到的结果是:
1
2
0
1
2
3
以便求每个id的own状态为1的最长时间段。请问在stata中如何实现?






最佳答案

黃河泉 查看完整内容

Nick Cox 建议下列不同作法:
关键词:Stata 变量分组 tata year 如何实现

回帖推荐

黃河泉 发表于2楼  查看完整内容

Nick Cox 建议下列不同作法:

沙发
黃河泉 在职认证  发表于 2017-6-26 17:03:49
Nick Cox 建议下列不同作法:
  1. // method 1
  2. gen runsum1 = .
  3. bysort id (year): replace runsum1 = cond(_n == 1, x, cond(x == 0, 0, runsum1[_n-1] + x))

  4. // method 1a
  5. gen runsum1a = x
  6. bysort id (year): replace runsum1a = cond(x == 0, 0, runsum1a[_n-1] + x) if _n > 1
复制代码

藤椅
cha_cha 学生认证  发表于 2017-6-27 10:41:07
黃河泉 发表于 2017-6-27 07:36
Nick Cox 建议下列不同作法:
谢谢您!是我想要的结果!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-10 05:52