结果做出来了,但是过程比较复杂,各种重复……:
针对每一个id生成1984-2010的年代对应obs,merge到原有数据中,将missing转化为0,保留_merge
计算出每年的5-year-window eo值和ei值,然后再保留 _merge=3的数据
求优化,论坛币奉送
do file:
set obs 234
gen id=_n
expand 27
bys id: gen year=1983+_n
sort id year
save "R:\r.dta", replace
use biophare /*filename*/
sort id year
merge id year using "R:\r.dta"
sort id year
recode eo ei (.=0)
by id: gen eos=eo+eo[_n-1]+eo[_n-2]+eo[_n-3]+eo[_n-4]
by id: replace eos=eo+eo[_n-1]+eo[_n-2]+eo[_n-3] if eos==.
by id: replace eos=eo+eo[_n-1]+eo[_n-2] if eos==.
by id: replace eos=eo+eo[_n-1] if eos==.
by id: replace eos=eo if eos==.
by id: gen eis=ei+ei[_n-1]+ei[_n-2]+ei[_n-3]+ei[_n-4]
by id: replace eis=ei+ei[_n-1]+ei[_n-2]+ei[_n-3] if eis==.
by id: replace eis=ei+ei[_n-1]+ei[_n-2] if eis==.
by id: replace eis=ei+ei[_n-1] if eis==.
by id: replace eis=ei if eis==.
keep if _merge==3
keep id year eos eis