全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1242 5
2022-09-17
各位大神,求助:我有1个变量var1,共有1000个观测值,需要每隔4个观测值进行相加。比如;观测值为1,1,2,4,4,4,4,4,4,4;要求1+1+2+4,1+2+4+4,2+4+4+4.........以此类推,stata的循环命令应该怎么写。请大神教我!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-9-18 10:28:02

forvalues i = 1/`=_N - 4' {
gen var2 = var[`i']  + var[`i' + 1] + var[`i' + 2] + + var[`i' + 3]
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-9-18 14:09:41
感谢大佬!但是我根据您给到的程序操作之后,没有实现循环,变量adi_sum4全部都是变量adi的第一个观测值到第四个观测值相加。数据如附件图片,不知道是哪里出错了呢?
附件列表
循环求和.png

原图尺寸 241.99 KB

循环求和.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-9-18 16:28:30
  gen sum=var[_n]+var[_n-1]+var[_n-2]+var[_n-3]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-9-18 19:12:41
已解决,感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-11-4 11:16:15
两个思路:
1.以年份进行循环:gen sum = 0 /// foreach year = 2005/2013{ replace sum = time[_n] + time[_n - 1] + time[_n - 2] + time[_n - 3] if time = `year'Q4}
2.直接相加计算(假设楼主的time列一共有100个数据):gen sum = 0 /// foreach  m = 4(4)100{ replace sum = time[_`m'] + time[_`m' - 1] + time[_`m' - 2] + time[_`m' - 3]}
计算完过后再分年份用最大值replace(foreach year,sum找最大值,然后replace)
没有数据可以实验,应该有点问题,仅提供思路
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群