【问题标题】:invalid 'Component' error when looping over files in a folder in stata循环遍历stata文件夹中的文件时出现无效的“组件”错误
【发布时间】: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


【解决方案1】:

需要的最小修复是

import delimited using "`file'", clear varn(1)

因为您的文件名可能包含空格。有关基本文档,请参阅 help filename

【讨论】:

  • 就是这样!非常感谢您的帮助。
  • @IAN CHAN 如果这是您可以考虑接受它作为答案并支持它的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多