请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
g y=x
replace y=y[_n-1]*x in 2/l
*按ID做递乘
sort id
by id: g z=_n
by id: replace y=y[_n-1]*x if z>1
drop z
可能我表述的不太清楚,这个Y是在不同的ID中重复出现产生的,所以要前缀bysort (id),但是显示出错,说in may not be combined with by,怎么办啊?
我想了个办法,因为我样本有1084个id
forvalues no = 1/1084 {replace Y = Y[_n-1]*X in 2/l if id ==`no`}
为什么一直显示`no` invalid name?? 我起其他的名字也一样
这个没错的啊
是可以达到目的的
不懂你这句话的意思。可否举一个例子说明你想要的结果?
g y=xbysort id: replace y=y[_n-1]*x if _n>1
*3楼等价于以上两条命令。
it works
太感谢了
可能表达能力有限,我贴了一点我的样本,我现在想gen一个新的variable A,我想把每个月的收益率连乘。在不同的id sub group里面重复这样的命令,所以还是连乘的问题,怎么能达到呢?
因为Variable msr代表的是monthly stock return,所以一个event_m (代表event month) 会对应3个相同的值,event_d代表event day
你还是没有说清楚你的问题
你把你的部分数据上传,放到excel里面,
在excel里面手动计算出你想要的结果,这样别人就知道你想做什么了。
马上下载
对我的表达能力汗颜,麻烦版主了,我把我的问题和部分样本放在excel文档里了,希望这次能让大家明白我的意图,谢谢
没有office2007,打不开
不清楚为什么你的每个月的数值都是相同的。
如果是不同的不知道你的公式是怎么算的。
下面的是可以产生和你的x相同值的程序
sort id event_d event_m
gen x1= msr
by id event_d: replace x1=x1[_n-1]* msr if event_m>1
因为msr代表的是公司月收益,所以一个月里面21天的数据都是一样的,我只是贴了3天的数据
命令好像不太对,event_d指的是一个月里面的第几天,每一个月event_m的event_d都是从1开始,到3结束
如果按照所写命令,每个ID里面的X都是一样的,我在Stata里面试过
各位高手,帮帮小弟吧
我解决了,下面的命令可以用,但不知道是不是最简单的
by id: gen cpmmr=msr[1]forvalues i=2/61{by id: replace cpmmr=cpmmr[1+(`i'-2)*3]*msr[1+(`i'-1)*3] if event_m==`i'}
sungmoo 发表于 2009-2-13 11:08 *按ID做递乘sort idg y=xby id: g z=_nby id: replace y=y[_n-1]*x if z>1drop z