全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
18473 24
2009-02-13
小弟被这个问题困扰多时了,一直进行不下去,帮帮忙吧有一个叫做X的变量,我想generate出一个新变量叫Y
Y[1]=X[1]
Y[2]=X[1]*X[2]
Y[3]=X[1]*X[2]*X[3]

Y[_n]=X[1]*X[2]*......*X[_n-1]*X[_n]

是不是要用循环的命令啊,我看了不少,foreach, forvalue, while,再配上local,可都试过了还是解决不了,急死了

对了,我数据是panel data,上面的只是针对一个ID,如果很多个ID,是不是只要前缀bysort ID就行了啊?谢谢,
二维码

扫码加我 拉你入群

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

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

全部回复
2009-2-13 10:57:00

g y=x

replace y=y[_n-1]*x in 2/l

二维码

扫码加我 拉你入群

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

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

2009-2-13 11:08:00

*按ID做递乘

sort id

g y=x

by id: g z=_n

by id: replace y=y[_n-1]*x if z>1

drop z

二维码

扫码加我 拉你入群

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

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

2009-2-13 17:57:00

可能我表述的不太清楚,这个Y是在不同的ID中重复出现产生的,所以要前缀bysort (id),但是显示出错,说in may not be combined with by,怎么办啊? 

二维码

扫码加我 拉你入群

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

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

2009-2-13 18:48:00

我想了个办法,因为我样本有1084个id

forvalues no = 1/1084 {
replace Y = Y[_n-1]*X in 2/l if id ==`no`
}

为什么一直显示`no` invalid name?? 我起其他的名字也一样

二维码

扫码加我 拉你入群

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

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

2009-2-13 18:51:00
以下是引用sungmoo在2009-2-13 11:08:00的发言:

*按ID做递乘

sort id

g y=x

by id: g z=_n

by id: replace y=y[_n-1]*x if z>1

drop z

这个没错的啊

是可以达到目的的

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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