我的代码主要是从这里开始的(下栏):http://www.ats.ucla.edu/stat/stata/faq/append_many_files.htm
clear
file open myfile9 using C:\Users\RNCZF01\Documents\Cameron-Fen\Economics-Projects\Neighborhood-Project\list.csv, read
file read myfile9 line
insheet using `line', comma
save `line'.dta, replace
save master_data.dta, replace
drop _all
file read myfile9 line
while r(eof)==0 {
capture insheet using `line', comma
if _rc!=0 {
insheet using `line', comma
save `line'.dta, replace
append using master_data.dta, force
save master_data.dta, replace
}
drop _all
file read myfile9 line
}
最初我有insheet using line', comma
(我删除了行之前的勾号,因为它干扰了格式化)。但问题是我试图阅读的一些床单是空白的,所以Stata会关闭。因此,我改变了这一点:
capture insheet using `line', comma
if _rc!=0 {
insheet using `line', comma
然而,在仅读取第一个文档之后关闭(并且在while循环(第二个文档)的第一次迭代完成之前退出while循环)。我的想法是,宏在使用时可能会消失,但我不知道。
答案 0 :(得分:0)
你的循环关闭的原因是因为你想要
if _rc==0
表示内循环。我猜你的第一个文件没找到,insheet抛出一个错误,你正在触发if _rc!= 0条件。然后循环尝试运行insheet而没有捕获和错误。另一种诊断方法是运行
set trace on
我发现在这种情况下有帮助。
P.S。不确定礼仪,但这个答案归功于lmo。我只是觉得写作答案而不是评论是值得的。