cap pro drop es
pro es
version 12.0
forv i=2005/2005{
use `i'
keep code date year yue r0
save `i',replace
}
use 2005
append using 2004
append using 2003
append using 2002
append using 2001
append using 2000
append using 1999
append using 1998
append using 1997
save all,replace
use mr0
sort year date
save,replace
use all
sort year date
merge year date using mr0,keep(mr0)
egen miss=rowmiss(_all)
drop if miss
drop miss
drop _merge
save,replace
gen ar=r0-mr0
drop r0
drop mr0
save,replace
use event_date
replace year=year+1
sort code year
save,replace
use all
sort code year
merge code year using event_date,keep(event_date)
egen miss=rowmiss(_all)
drop if miss
drop miss
drop _merge
save,replace
format date %tdCCYY-NN-DD
format event_date %tdCCYY-NN-DD
replace year=year-1
save,replace
use all
save new,replace
forv i=2004/2004{
use new
keep if year==`i'
sort code date
by code: gen datenum=_n
by code: gen target=datenum if date==event_date
egen td=min(target), by(code)
gen dif=datenum-td
drop target
drop td
by code: gen window103=1 if dif>=-10 & dif<=-3
egen count103=count(window103), by(code)
replace window103=0 if window103==.
drop if count103 < 8
by code: egen CAR103 = sum(ar) if window103==1
drop if CAR103==.
by code: gen num=_n
keep if num==1
keep code CAR103 event_date year
save `i'CAR103, replace
use new
keep if year==`i'
sort code date
by code: gen datenum=_n
by code: gen target=datenum if date==event_date
egen td=min(target), by(code)
gen dif=datenum-td
drop target
drop td
by code: gen window22=1 if dif>=-2 & dif<=2
egen count22=count(window22), by(code)
replace window22=0 if window22==.
drop if count22 < 5
by code: egen CAR22 = sum(ar) if window22==1
drop if CAR22==.
by code: gen num=_n
keep if num==1
keep code CAR22 event_date year
save `i'CAR22, replace
use new
keep if year==`i'
sort code date
by code: gen datenum=_n
by code: gen target=datenum if date==event_date
egen td=min(target), by(code)
gen dif=datenum-td
drop target
drop td
by code: gen window35=1 if dif>=3 & dif<=5
egen count35=count(window35), by(code)
replace window35=0 if window35==.
drop if count35 < 3
by code: egen CAR35 = sum(ar) if window35==1
drop if CAR35==.
by code: gen num=_n
keep if num==1
keep code CAR35 event_date year
save `i'CAR35, replace
use new
keep if year==`i'
sort code date
by code: gen datenum=_n
by code: gen target=datenum if date==event_date
egen td=min(target), by(code)
gen dif=datenum-td
drop target
drop td
by code: gen window105=1 if dif>=-10 & dif<=5
egen count105=count(window105), by(code)
replace window105=0 if window105==.
drop if count105 < 16
by code: egen CAR105 = sum(ar) if window105==1
drop if CAR105==.
by code: gen num=_n
keep if num==1
keep code CAR105 event_date year
save `i'CAR105, replace
use new
keep if year==`i'
sort code date
by code: gen datenum=_n
by code: gen target=datenum if date==event_date
egen td=min(target), by(code)
gen dif=datenum-td
drop target
drop td
by code: gen window11=1 if dif>=-1 & dif<=1
egen count11=count(window11), by(code)
replace window11=0 if window11==.
drop if count11 < 3
by code: egen CAR11 = sum(ar) if window11==1
drop if CAR11==.
by code: gen num=_n
keep if num==1
keep code CAR11 event_date year
save `i'CAR11, replace
use new
keep if year==`i'
sort code date
by code: gen datenum=_n
by code: gen target=datenum if date==event_date
egen td=min(target), by(code)
gen dif=datenum-td
drop target
drop td
by code: gen window33=1 if dif>=-3 & dif<=3
egen count33=count(window33), by(code)
replace window33=0 if window33==.
drop if count33 < 7
by code: egen CAR33 = sum(ar) if window33==1
drop if CAR33==.
by code: gen num=_n
keep if num==1
keep code CAR33 event_date year
save `i'CAR33, replace
}
end