我有两组股票数据fundamentals 和marketdata,定义新变量分别是以year和date(如1989m1)为时间序列。
即fundamentals:
xtset gvkey year
sort gvkey year
var1=...
var2=...
marketdata:
xtset gvkey date
sort gvkey date
g r = (prccm-l.prccm)/prccm //get the monthly raw return,prccm is the monthly close stock price
之后我需要将两组数据合并:
use marketdata.dta,clear
sort gvkey year
merge m:1 gvkey year using fundamentals.dta, force
keep if _merge==3
得出一个新的数据表,现在我需要按十分位分组,并求每组对应的下一年的平均股票收益,如表:
deciles
year
monthly return
mean return
mean return t+1
1
1996
0.01
0.15
0.35
1
1996
0.02
0.15
0.35
1
1997
0.03
0.35
0.05
1
1997
0.04
0.35
0.05
1
1998
0.05
0.05
.
2
1996
0.06
0.07
0.09
2
1996
0.07
0.07
0.09
2
1996
0.08
0.07
0.09
2
1997
0.09
0.09
.
mean return是每组每年对应的平均月收益,如何生成新的一组变量,使其等于每组下一年对应的平均月收益呢?即上述表中的mean return t+1
我写的是:
bysort deciles: egen mr = mean(r)
xtset deciles year
sort deciles year
g mr_t1 = F.mr
//using lead-operator to generate the mean return t+1 for each decile
但是输出结果是
repeated time values within panel, 估计是因为在合并两组数据前,我已经对fundamentals里的数据定义了以年为时间序列,不可以重复定义。
请问如何得到表中的mean return t+1呢?