capture prog drop gowide prog def gowide local nvars 0 if "`1'"!="" { local varlist "req ex" parse "`*'" parse "`varlist'",parse(" ") while "`1'"~="" { local nvars=`nvars'+1 local var`nvars'="`1'" mac shift } } local nvars=`nvars'+1 local var`nvars'="match_id" local nvars=`nvars'+1 local var`nvars'="mis" local nvars=`nvars'+1 local var`nvars'="level" local nvars=`nvars'+1 local var`nvars'="matched" local nvars=`nvars'+1 local var`nvars'="famsize1" local nvars=`nvars'+1 local var`nvars'="famsize2" if $unix { capture rename matchID match_id } keep if match_id~=. sort mis match_id save ${temploc}junk,replace keep if year==$yr2 local varlist "req ex" parse "_all" parse "`varlist'",parse(" ") while "`1'"~="" { local hit 0 local i 1 while `i'<=`nvars' { if "`1'"=="`var`i''" { local hit 1 } local i=`i'+1 } if !`hit' { local newname=substr("`1'",1,6) + "_2" rename `1' `newname' } mac shift } sort mis match_id save ${temploc}junk1,replace use ${temploc}junk,clear keep if year==$yr1 local varlist "req ex" parse "_all" parse "`varlist'",parse(" ") while "`1'"~="" { local hit 0 local i 1 while `i'<=`nvars' { if "`1'"=="`var`i''" { local hit 1 } local i=`i'+1 } if !`hit' { local newname=substr("`1'",1,6) + "_1" rename `1' `newname' } mac shift } sort mis match_id merge mis match_id using ${temploc}junk1 assert _merge==3 drop _merge save ${temploc}junk$char,replace end