全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
7850 9
2011-04-08
有三百家公司,每家公司有24个月的数据,要求对每家公司进行:从13月开始到24月,分别对前面12个月的数据进行加总,怎么用forv实现这个操作
二维码

扫码加我 拉你入群

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

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

全部回复
2011-4-10 10:25:34
tsset id month
bysort id: egen sum_x = sum(x) if month>12
二维码

扫码加我 拉你入群

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

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

2011-4-10 11:10:03
1. reshape 数据成wide格式
2. forvalue a = 1 / 12 {
         local b = `i' + 12
         local c = `i'  + 11
         egen total`b' = rowtotal(var`a'  - var`c')
      }
3. reshape 数据成long格式
二维码

扫码加我 拉你入群

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

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

2011-4-10 12:07:04
ctx5518 发表于 2011-4-10 11:10
1. reshape 数据成wide格式
2. forvalue a = 1 / 12 {
         local b = `i' + 12
         local c = `i'  + 11
         egen total`b' = rowtotal(var`a'  - var`c')
      }
3. reshape 数据成long格式
非常迂回的方法,不过也能实现

bys id (month):gen sum_x=sum(x)
bys id (month):gen sum12=sum_x[_n-1]-sum_x[_n-13]
二维码

扫码加我 拉你入群

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

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

2011-4-10 20:15:08
挺常见的问题,但竟然想不到简单的解决方法,可叹!
当初一看到这个问题就想到“移动窗口”,也即rolling或tssmooth,但可惜要想真正实现好像都不简单。

下面是个不迂回,但“丑陋的”方法:
bysort id (month): gen sum_x =x[_n-1]+x[_n-2]+x[_n-3]+x[_n-4]+x[_n-5]+x[_n-6]+x[_n-7]+x[_n-8]+x[_n-9]+x[_n-10]+x[_n-11]+x[_n-12]
二维码

扫码加我 拉你入群

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

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

2011-4-10 21:02:00
voodoo 发表于 2011-4-10 20:15
挺常见的问题,但竟然想不到简单的解决方法,可叹!
当初一看到这个问题就想到“移动窗口”,也即rolling或tssmooth,但可惜要想真正实现好像都不简单。

下面是个不迂回,但“丑陋的”方法:
bysort id (month): gen sum_x =x[_n-1]+x[_n-2]+x[_n-3]+x[_n-4]+x[_n-5]+x[_n-6]+x[_n-7]+x[_n-8]+x[_n-9]+x[_n-10]+x[_n-11]+x[_n-12]
这是个最直接的方法,也是最容易想到却不愿意用的方法(输入太繁琐)。
这是个滑动求和的运算
有一个问题:如果存在缺失值的话,这个式子可能就不成立。(ctx5518的方法却可以有效避免)
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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