在 stata 中循环遍历文件夹中的文件时出现无效 'Component' 错误
invalid 'Component' error when looping over files in a folder in stata
我想附加多个每日市场指数数据,这些数据是我单独下载的,并且都以 csv 格式存储在同一文件夹中。作为第一步,我清理了数据并将每个 csv 文件保存为 dta 文件。但是,在清理并保存第一个 csv 文件后,抛出了一个名为“invalid 'Component'”的 r(198) 错误。
csv 文件在模式中命名为“BR-IBOVESPA-BVSP-20150101-20201223.csv”,其中“BR”是巴西的两个字母缩写,“IBOVESPA”是名称大盘指数,“BVSP”为其雅虎财经的代号,“20150101-20201223”代表时间段。
这是我的 Stata 代码:
clear all
cd "...\Market-indices"
local myfiles: dir "...\Market-indices" files "*3.csv", respectcase
foreach file of local myfiles {
import delimited using `file', clear varn(1)
keep date close
gen filename = "`file'"
split filename, p("-")
rename filename1 country
rename filename2 index
drop filename filename3 filename4 filename5
capture confirm numeric variable close
if c(rc)!=0 {
destring close, force replace
}
save "`file'.dta", replace
}
命令 window 报告如下:
. cd "...\Market-indices"
...\Market-indices
.
.
. local myfiles: dir "...\Market-indices" files "*3.csv", respectcase
.
. foreach file of local myfiles {
2. import delimited using `file', clear varn(1)
3. keep date close
4. gen filename = "`file'"
5. split filename, p("-")
6. rename filename1 country
7. rename filename2 index
8. drop filename filename3 filename4 filename5
9. capture confirm numeric variable close
10. if c(rc)!=0 {
11. destring close, force replace
12. }
13. save "`file'.dta", replace
14. }
(7 vars, 1,488 obs)
variables created as string:
filename1 filename2 filename3 filename4 filename5
close: contains nonnumeric characters; replaced as long
(11 missing values generated)
file BR-IBOVESPA-BVSP-20150101-20201223.csv.dta saved
invalid 'Component'
r(198);
end of do-file
r(198);
顺便说一句,如果我 运行 循环内的代码分别用于每个 csv 文件,效果很好。
所需的最小修复是
import delimited using "`file'", clear varn(1)
因为您的文件名可能包含空格。有关基本文档,请参阅 help filename
。
我想附加多个每日市场指数数据,这些数据是我单独下载的,并且都以 csv 格式存储在同一文件夹中。作为第一步,我清理了数据并将每个 csv 文件保存为 dta 文件。但是,在清理并保存第一个 csv 文件后,抛出了一个名为“invalid 'Component'”的 r(198) 错误。
csv 文件在模式中命名为“BR-IBOVESPA-BVSP-20150101-20201223.csv”,其中“BR”是巴西的两个字母缩写,“IBOVESPA”是名称大盘指数,“BVSP”为其雅虎财经的代号,“20150101-20201223”代表时间段。
这是我的 Stata 代码:
clear all
cd "...\Market-indices"
local myfiles: dir "...\Market-indices" files "*3.csv", respectcase
foreach file of local myfiles {
import delimited using `file', clear varn(1)
keep date close
gen filename = "`file'"
split filename, p("-")
rename filename1 country
rename filename2 index
drop filename filename3 filename4 filename5
capture confirm numeric variable close
if c(rc)!=0 {
destring close, force replace
}
save "`file'.dta", replace
}
命令 window 报告如下:
. cd "...\Market-indices"
...\Market-indices
.
.
. local myfiles: dir "...\Market-indices" files "*3.csv", respectcase
.
. foreach file of local myfiles {
2. import delimited using `file', clear varn(1)
3. keep date close
4. gen filename = "`file'"
5. split filename, p("-")
6. rename filename1 country
7. rename filename2 index
8. drop filename filename3 filename4 filename5
9. capture confirm numeric variable close
10. if c(rc)!=0 {
11. destring close, force replace
12. }
13. save "`file'.dta", replace
14. }
(7 vars, 1,488 obs)
variables created as string:
filename1 filename2 filename3 filename4 filename5
close: contains nonnumeric characters; replaced as long
(11 missing values generated)
file BR-IBOVESPA-BVSP-20150101-20201223.csv.dta saved
invalid 'Component'
r(198);
end of do-file
r(198);
顺便说一句,如果我 运行 循环内的代码分别用于每个 csv 文件,效果很好。
所需的最小修复是
import delimited using "`file'", clear varn(1)
因为您的文件名可能包含空格。有关基本文档,请参阅 help filename
。