参考Brandt et al.(2012)的代码,本人在step 80出现问题,系统显示type mismatch,对于这个简单的系统错误,本人利用了部分样本跑了一下代码,发现是step80的问题,但是前后看了,个人觉得并不是代码的问题,亦或是数据的问题?望有相同经历的同学进行解惑。
相关源代码:(相关merge指标有改变,但是思路与代码作者一致)
******************************************
* *
* STAGE 2: Match Three Consecutive Years *
* *
******************************************
local i = 1998
while `i' < 2002{
local j=`i'+1
local k=`i'+2
**step 70: create a three-year balanced sample**
use m`i'-m`j'.dta, clear
keep if match_status_`i'_`j'=="1"
keep id`i' lglenttycd`i' cpynm`i' cprtion`i' prvid`i' idstryid`i' rgster`i' sbjct`i' busns`i' stupyea`i' pdcvlue`i' selvlu`i' idadvlu`i' crntast`i' rcvbl`i' mechnd`i' mnfctd`i' cptast`i' cptastv`i' acdpctn`i' totlast`i' crtlb`i' acpabl`i' ltlb`i' totllb`i' totlpri`i' mopen`i' taxc`i' instp`i' oppft`i' totlpft`i' totlb`i' incmtx`i'
save unmatched`i'.10.dta, replace
use m`i'-m`j'.dta, clear
drop if match_status_`i'_`j'=="1"
gen code=id`j'
sort code
save m`i'-m`j'.10.dta, replace
use m`j'-m`k'.dta, clear
keep if match_status_`j'_`k'=="2"
keep id`k' lglenttycd`k' cpynm`k' cprtion`k' prvid`k' idstryid`k' rgster`k' sbjct`k' busns`k' stupyea`k' pdcvlue`k' selvlu`k' idadvlu`k' crntast`k' rcvbl`k' mechnd`k' mnfctd`k' cptast`k' cptastv`k' acdpctn`k' totlast`k' crtlb`k' acpabl`k' ltlb`k' totllb`k' totlpri`k' mopen`k' taxc`k' instp`k' oppft`k' totlpft`k' totlb`k' incmtx`k'
save unmatched`k'.10.dta, replace
use m`j'-m`k'.dta, clear
drop if match_status_`j'_`k'=="2"
gen code=id`j'
sort code
save m`j'-m`k'.10.dta, replace
use m`i'-m`j'.10.dta, clear
merge code using m`j'-m`k'.10.dta
drop _merge code
keep if match_status_`i'_`j'=="3"& match_status_`j'_`k'=="3"
gen match_status_`i'_`k'="3"
gen match_method_`i'_`k'="`j'"
save balanced.m`i'-m`j'-m`k'.dta, replace
**step 80: create files for unmatched `i' firms and `k' firms**
use m`i'-m`j'.10.dta, clear
merge code using m`j'-m`k'.10.dta
drop _merge code
drop if match_status_`i'_`j'=="3" & match_status_`j'_`k'=="3"
drop if id`i'==""
gen code=id`i'
sort code
save unmatched`i'.15.dta, replace
use unmatched`i'.15.dta, clear
keep id`i' lglenttycd`i' cpynm`i' cprtion`i' prvid`i' idstryid`i' rgster`i' sbjct`i' busns`i' stupyea`i' pdcvlue`i' selvlu`i' idadvlu`i' crntast`i' rcvbl`i' mechnd`i' mnfctd`i' cptast`i' cptastv`i' acdpctn`i' totlast`i' crtlb`i' acpabl`i' ltlb`i' totllb`i' totlpri`i' mopen`i' taxc`i' instp`i' oppft`i' totlpft`i' totlb`i' incmtx`i'
append using unmatched`i'.10.dta
save unmatched`i'.20.dta, replace
use m`i'-m`j'.10.dta, clear
merge code using m`j'-m`k'.10.dta
drop _merge code
drop if match_status_`i'_`j'=="3"& match_status_`j'_`k'=="3"
drop if id`k'==""
gen code=id`k'
sort code
save unmatched`k'.15.dta, replace
use unmatched`k'.15.dta, clear
keep id`k' lglenttycd`k' cpynm`k' cprtion`k' prvid`k' idstryid`k' rgster`k' sbjct`k' busns`k' stupyea`k' pdcvlue`k' selvlu`k' idadvlu`k' crntast`k' rcvbl`k' mechnd`k' mnfctd`k' cptast`k' cptastv`k' acdpctn`k' totlast`k' crtlb`k' acpabl`k' ltlb`k' totllb`k' totlpri`k' mopen`k' taxc`k' instp`k' oppft`k' totlpft`k' totlb`k' incmtx`k'
append using unmatched`k'.10.dta
save unmatched`k'.20.dta, replace
use m`i'-m`j'.10.dta, clear
merge code using m`j'-m`k'.10.dta
drop _merge code
drop if match_status_`i'_`j'=="3"| match_status_`j'_`k'=="3"
gen code=id`j'
sort code
save unmatched`j'.15.dta, replace
local i = `i' + 1
}