在 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