正式发表版
在运行一个stata宏循环程序时,出现“__000001 not found”的错误提示,也找了各种方法来解决,但仍无果,希望坛友能帮忙,在线等待。
程序代码如下:
**set iteration
local iter=1
local i="_iter1"
set more off
**Create first-stage data 2nd time (iter 1)
capture log close
log using firststage_datacreate_iter1, replace text
**1 Set up iter1 files
**create obs for NOR
clear
set obs 100
gen x = 1
replace x = 0 in 1
gen s = sum(x)
replace s = 6584 in 100
replace s = 865 in 99
drop x
keep if s==0 | (s>=5 & s<=8) | s==6584 | s==77 | s==85 | s==60 | s==80 | s==865 | s==65 | s==84
save temps, replace
clear
set obs 110
gen x = 1
gen year = sum(x)
drop x
keep if year>=89 & year<=110
save tempy, replace
clear
set obs 110
gen x = 1
gen m = sum(x)
drop x
keep if m>=100 & m<=110
cross using temps
cross using tempy
gen uncode =579
gen wbcode = "NOR"
gen b=0
sort uncode year s m
save tempnor, replace
**prep first stage estimates file from existing first-pass of first-stage estimates
foreach pp in paalas0 paalas2 paalas4 paalas6 {
use paalas_ever0_iter0, clear
keep if mmm==103 | mmm==104
keep if obj=="`pp'"
drop if uncode==99
rename mmm m
append using tempche /*add data for numeraire*/
egen bm = mean(b), by(year s m)
gen lbf = b-bm
gen bfactor = exp(lbf)
sort uncode year s m
save paalas_ever0_iter0_bf_`pp', replace
}
quietly {
foreach p in 0 2 6 {
foreach y in 95110 {
foreach m in 100 102 103 104 99 {
foreach sss in 0 9 99 6080 865 {
**read in data
noisily display [`p'] " " ["`i'"] " " [`m'] " " [`sss']
use temp/iuv_ij_`y'_01, clear
**add wbcodes and pcgdp info
sort uncodei
merge uncodei using input/uncodei
tab _merge
keep if _merge==3
drop _merge
sort uncodej
merge uncodej using input/uncodej
tab _merge
keep if _merge==3
drop _merge
**reset
local cscreen=0
local yscreen=0
local vscreen=0
local qscreen=0
local sscreen=100
**check sscreen
if (`m'== 102) {
local vscreen=100
local qscreen=25
local sscreen=100
local yscreen=3
local cscreen=25
}
if (`m'== 103) {
local vscreen=100
local qscreen=25
local sscreen=5
local yscreen=3
local cscreen=25
}
if (`m'== 104) {
local vscreen=100
local qscreen=25
local sscreen=4
local yscreen=3
local cscreen=25
}
**pick sectors
if `sss'==0 {
drop if s2==68
gen s=0
}
if `sss'==6080 {
keep if (s2>=61 & s2<=69) | (s2>=81 & s2<=89)
drop if s2==68
replace s2=60 if s2>=61 & s2<=69 & s2~=65
replace s2=80 if s2>=81 & s2<=89 & s2~=84
gen s=s2
noisily tab s2
}
if `sss'==865 {
keep if s1==8 | s2==65
gen s=865
}
if `m' ~= 100 & `m'~=99 {
**new primary screen
egen ti = tag(uncodei sector year)
egen tj = tag(uncodej sector year)
egen yrsini = sum(ti), by(uncodei sector)
egen yrsinj = sum(tj), by(uncodej sector)
tab yrsini
tab yrsinj
drop if yrsini==1 | yrsinj==1
sum yrsini yrsinj
drop ti tj yrsini yrsinj
}
**value and q screens
drop if valuei <`vscreen' | valuej <`vscreen'
drop if qi <`qscreen' | qj <`qscreen'
**uv screens -- be careful to count each one just once
if `sscreen' ~= 100 {
**if second iteration, get bfactor for adjusting geo mean. if not, set to 1
if `iter'==1 {
gen m=`m'
rename uncodei uncode
sort uncode year s m
merge uncode year s m using paalas_ever0_iter0_bf_paalas`p', keep(bfactor)
rename bfactor bfactori
tab _merge
drop if _merge==2
drop _merge
rename uncode uncodei
rename uncodej uncode
sort uncode year s m
merge uncode year s m using paalas_ever0_iter0_bf_paalas`p', keep(bfactor)
rename bfactor bfactorj
tab _merge
drop if _merge==2
drop _merge
rename uncode uncodej
*drop m
}
egen ti = tag(uncodei sector year)
egen tj = tag(uncodej sector year)
replace ti=. if ti==0
replace tj=. if tj==0
replace ti = uvi*ti
replace tj = uvj*tj
gen luvi = ln(ti)
gen luvj = ln(tj)
drop ti tj
egen lgeoi = mean(luvi), by(sector year)
egen lgeoj = mean(luvj), by(sector year)
drop luvi luvj
gen geoi = exp(lgeoi)
gen geoj = exp(lgeoj)
gen ti = uvi/(geoi*bfactori)
gen tj = uvj/(geoj*bfactorj)
local recip = 1/`sscreen'
drop if ti>=`sscreen' | tj>=`sscreen'
drop if ti<=`recip' | tj<=`recip'
sum lgeoi-geoj
drop lgeoi lgeoj geoi geoj
**participation screens -- check for minimum years and contiguity
egen yrsini = sum(ti), by(uncodei sector)
egen yrsinj = sum(tj), by(uncodej sector)
drop if yrsini<`yscreen' | yrsinj<`yscreen'
drop ti tj yrsini yrsinj
}
**common screen (last)
gen t1 = uvi~=. & uvj~=.
egen common = sum(t1), by(s uncodei uncodej year)
drop if common<=`cscreen'
drop t1 common
drop if uncodei<=uncodej
save temp/first_s_`y'_mm`m'_00_`sss'`i'_paalas`p', replace
**Compute ecdc: c's cost to c's amount with d's price
gen t1 = uvi*qi
gen t2 = uvj*qi
replace t1=. if t2==.
egen pn = sum(t1), by(s uncodei uncodej year)
egen pd = sum(t2), by(s uncodei uncodej year)
**gen ecd = pn/pd
gen p = ln(pn/pd)
drop t1 t2 pn pd
**Compute edcc: d's cost to d's amount with c's price
gen t1 = uvj*qj
gen t2 = uvi*qj
replace t1=. if t2==.
egen ln = sum(t1), by(s uncodei uncodej year)
egen ld = sum(t2), by(s uncodei uncodej year)
**gen edc = ln/ld
gen l = ln(ld/ln)
drop t1 t2 ln ld
**compute other
gen mm=`m'
save temp/first_s_`y'_mm`m'_01_`sss'`i'_paalas`p', replace
**collapse out products
gen common = uvi~=. & uvj~=.
collapse (sum) valuei valuej common (mean) l p, by(s uncodei uncodej year)
**add wbcodes and pcgdp info
sort uncodei
merge uncodei using input/uncodei
tab _merge
keep if _merge==3
drop _merge
sort uncodej
merge uncodej using input/uncodej
tab _merge
keep if _merge==3
drop _merge
set trace on 后的错误提示为:
- _gtotal `0'
= _gtotal float __000001 = (t1) , by(s uncodei uncodej year)
- version 6, missing
- syntax newvarname =/exp [if] [in] [, BY(varlist) Missing]
- tempvar touse miss
- quietly {
- gen byte `touse'=1 `if' `in'
= gen byte __000002=1
- gen byte `miss' = `touse'
= gen byte __000003 = __000002
- if "`missing'" != "" {
= if "" != "" {
replace `miss'=0 if `exp' >= .
}
- sort `touse' `by' `miss'
= sort __000002 s uncodei uncodej year __000003
- by `touse' `by': gen `typlist' `varlist' = sum(`exp') if `miss'==1
= by __000002 s uncodei uncodej year: gen float __000001 = sum((t1) ) if __000003==1
- by `touse' `by': replace `varlist' = `varlist'[_N]
= by __000002 s uncodei uncodej year: replace __000001 = __000001[_N]
- }
- global EGEN_SVarname
- global EGEN_Varname
- if _rc { exit _rc }
- quietly count if missing(`dummy')
= quietly count if missing(__000001) __000001 not found
egen pd = sum(t2), by(s uncodei uncodej year)
gen p = ln(pn/pd)
drop t1 t2 pn pd
gen t1 = uvj*qj
gen t2 = uvi*qj
replace t1=. if t2==.
egen ln = sum(t1), by(s uncodei uncodej year)
egen ld = sum(t2), by(s uncodei uncodej year)
gen l = ln(ld/ln)
drop t1 t2 ln ld
gen mm=`m'
save temp/first_s_`y'_mm`m'_01_`sss'`i'_paalas`p', replace
gen common = uvi~=. & uvj~=.
collapse (sum) valuei valuej common (mean) l p, by(s uncodei uncodej year)
sort uncodei
merge uncodei using input/uncodei
tab _merge
keep if _merge==3
drop _merge
sort uncodej
merge uncodej using input/uncodej
tab _merge
keep if _merge==3
drop _merge
gen mm=`m'
save temp/first_s_`y'_mm`m'_02_`sss'`i'_paalas`p', replace
}
}
}
} r(111);