【发布时间】:2020-12-28 17:05:59
【问题描述】:
我想附加多个我单独下载并以 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
}
命令窗口报告如下:
. 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 文件分别运行循环内的代码,那效果很好。
【问题讨论】:
-
这里没有什么可以检查的。我唯一的猜测是,与您的问题相反,您的文件名比您允许的要多变。向我们展示第二个文件的名称是必要的。
-
您好,尼克,很高兴收到您的回复。以下几个文件的名称分别为:“CN-Shenzhen Component-399001.SZ-20150101-20201223”、“CN-SSE Composite Index-000001.SS-20150101-20201223”、“ES-IBEX 35-IBEX-20150101- 20201223。”请告诉我应该提供什么样的额外信息。
标签: stata stata-macros