全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3616 3
2018-05-30
我想用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
}
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-5-30 17:05:22
以前在MATLAB的双层循环里用过这样的操作,不晓得为啥在STATA里就不行啦。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-5-30 19:41:04
forval i = 2000/y{

缺引号吧

forval i = 2000/`y' {
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-5-31 11:16:46
蓝色 发表于 2018-5-30 19:41
forval i = 2000/y{

缺引号吧
嗯嗯,是这样的。问题解决啦。谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群