我想用forvalues循环对2000-2012年的工业企业数据库进行匹配。前面几组循环都可以正常运行,连续两年的匹配也成功了。
最后一组我用了双重循环语句,希望在连续的两年(三年、四年、..、十二年)的数据基础上,加上一年匹配成连续的三年(四年、五年、...、十三年)数据。
这时,问题出现啦。最后一组循环的内层循环上界我用的y,y是根据外层的循环变量生成的。报错说语法错误。
以前在MATLAB的双层循环里用过这样的操作,我晓得为啥在STATA里就不行啦。
forval i = 2000/2012{
use "m`i'.dta",clear
gen match_id=id`i' //match_id作为匹配变量
bysort match_id : drop if _N>1 //剔除match_id重复的样本
save "m`i'.ID.dta",replace
}
forval i = 2000/2012{
use "m`i'.ID.dta",clear
des,short //简单描述下即将用于匹配的数据集
}
*连续两年匹配
forval i = 2000/2011{
local t=`i'+1
use "m`i'.ID.dta",clear
merge 1:1 match_id using "m`t'.ID.dta"
keep if _merge == 3
drop _merge
save "matched2year.`i'-`t'.ID.dta",replace
}
*连续j年匹配,j=3,4,...,13
forval j = 3/13{
local y=2013-`j'
forval i = 2000/y{
local k=`i'+1
local t=`i'+2
local j0=`j'-1
use "matched`j0'year.`i'-`k'.ID.dta",clear
merge 1:1 match_id using "m`t'.ID.dta"
keep if _merge == 3
drop _merge
save "matched`j'year.`i'-`t'.ID.dta",replace
}
}


雷达卡




京公网安备 11010802022788号







