我有两组股票数据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呢?