楼主: sunkege
2681 7

[面板数据求助] stata非平衡面板数据怎样计算某一变量随时间的累积值 [推广有奖]

  • 1关注
  • 0粉丝

已卖:30份资源

硕士生

22%

还不是VIP/贵宾

-

威望
0
论坛币
74 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
271 点
帖子
14
精华
0
在线时间
267 小时
注册时间
2014-11-22
最后登录
2022-10-31

楼主
sunkege 发表于 2017-7-27 22:59:08 |AI写论文
20论坛币
stata非平衡面板数据怎样计算某一变量随时间的累积值,生成一个新变量。例如:


javascript:;

微信截图_20170727225444.png (32.84 KB)

微信截图_20170727225444.png

最佳答案

黃河泉 查看完整内容

可以的,请将 id(year) 分开:
关键词:非平衡面板数据 非平衡面板 Stata 平衡面板 面板数据

沙发
黃河泉 在职认证  发表于 2017-7-27 22:59:09
sunkege 发表于 2017-7-28 10:15
bysort那个也不可以,出来

. bysort id(year): gen v_acc = sum(volume)
可以的,请将 id(year) 分开:
  1. bysort id (year): gen v_acc = sum(volume)
复制代码

藤椅
黃河泉 在职认证  发表于 2017-7-28 08:32:45
建議用 dataex (先 ssc install dataex 并见说明) 将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
  1. dataex id year volume in 1/11
复制代码

板凳
黃河泉 在职认证  发表于 2017-7-28 08:37:03
请试试
  1. bys id (year): gen x = sum(volume)
复制代码

报纸
sunkege 发表于 2017-7-28 10:15:40
黃河泉 发表于 2017-7-28 08:37
请试试
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte id int year byte volume
  4. 1 2008 30
  5. 1 2009 20
  6. 1 2010 25
  7. 1 2011 40
  8. 2 2008 70
  9. 2 2009 75
  10. 2 2010 60
  11. 2 2011 50
  12. 3 2008 20
  13. 3 2010 35
  14. 3 2011 25
  15. end
复制代码
bysort那个也不可以,出来

. bysort id(year): gen v_acc = sum(volume)
factor variables and time-series operators not allowed
r(101);

地板
sunkege 发表于 2017-7-28 10:50:22
黃河泉 发表于 2017-7-28 08:37
请试试
可以用简单的方法:先把volume为0的年份也补上,然后再
xtset id year
gen v_acc = .
replace v_acc = volume if year == 2008
replace v_acc = volume + volume[_n-1] if year == 2009
replace v_acc = volume + volume[_n-1] + volume[_n-2] if year == 2010
replace v_acc = volume + volume[_n-1] + volume[_n-2] + volume[_n-3] if year == 2011
但是如果年份比较多,一句一句写太麻烦,怎样用循环语句做到呢?

7
sunkege 发表于 2017-7-28 10:50:23
黃河泉 发表于 2017-7-28 08:37
请试试
可以用简单的方法:先把volume为0的年份也补上,然后再
xtset id year
gen v_acc = .
replace v_acc = volume if year == 2008
replace v_acc = volume + volume[_n-1] if year == 2009
replace v_acc = volume + volume[_n-1] + volume[_n-2] if year == 2010
replace v_acc = volume + volume[_n-1] + volume[_n-2] + volume[_n-3] if year == 2011
但是如果年份比较多,一句一句写太麻烦,怎样用循环语句做到呢?

8
sunkege 发表于 2017-7-28 13:07:44
黃河泉 发表于 2017-7-28 10:56
可以的,请将 id(year) 分开:
多谢!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-29 15:44