【问题标题】:"Index has bad entries at data rows" error when reading CSV读取 CSV 时出现“索引在数据行中有错误条目”错误
【发布时间】:2016-02-08 14:05:09
【问题描述】:

我有一个 .csv 文件,其中包含以下格式的股票价格

Date    Open    High    Low Close
3/7/2014 10:15  228.28  236.58  228.23  236.18
3/7/2014 11:15  236.23  241.27  236.09  241.14
3/7/2014 12:15  241.1   246.12  241.1   242.96
3/7/2014 13:15  242.84  243.92  242     242.32

当我运行以下脚本时:

test <- as.xts(read.zoo(mytest.csv', header=T, fill=T, index.column = 1, row.names=NULL,stringsAsFactors = FALSE, sep="",format="%m/%d/%y %H:%M", tz=""))

显示以下错误

read.zoo("mydata.csv", header = T, fill = T, index.column = 1, : 索引在数据行有错误条目:1 2 3 4 5 6 7 8

【问题讨论】:

    标签: r zoo


    【解决方案1】:

    我不确定您从哪里获得 as.xts 函数,但我看到您需要进行两个小修复才能将数据导入 R。

    首先您应该为时间添加一个额外的变量名称,因为read.zoo 函数使用与read.table 相同的分隔符,因此如果您希望它与标题一起使用,那么您需要为每一列指定一个名称。

    Date     Time   Open    High    Low     Close
    3/7/2014 10:15  228.28  236.58  228.23  236.18
    3/7/2014 11:15  236.23  241.27  236.09  241.14
    3/7/2014 12:15  241.1   246.12  241.1   242.96
    3/7/2014 13:15  242.84  243.92  242     242.32
    

    其次,可以在上面的文件中读取如下

    library(zoo)
    indata <- read.zoo("mydata.csv", header=TRUE, index.column = 1:2, format="%m/%d/%Y %H:%M", tz="CET")
    

    请注意,由于日期/时间分为两列,因此给出了两个索引。另外,我认为日期/时间转换工作需要tz。无论如何,以上给出了

    > indata
                          Open   High    Low  Close
    2014-03-07 10:15:00 228.28 236.58 228.23 236.18
    2014-03-07 11:15:00 236.23 241.27 236.09 241.14
    2014-03-07 12:15:00 241.10 246.12 241.10 242.96
    2014-03-07 13:15:00 242.84 243.92 242.00 242.32
    

    可以传递给其他 R 函数。

    【讨论】:

    • 谢谢,ekstroem。我已经添加了另一列时间,但是当我运行上述命令时,这给了我另一个错误:[.data.frame(rval, , j) 中的错误:选择了未定义的列。请恢复
    • 你能显示你正在运行的确切代码吗?和文件
    • 日期时间开盘价最高价最低价关闭2013年1月30日10:15 12762.11 12808 12753.05 12758 2013年1月30日11:15 12758.05 12786.45 12740 12744 2013年1月30日12:15 12746.95 12759 12726.35 12740.4 2013-01-30 13:15 12737 12798.65 12735 12786.7 2013-01-30 14:15 12786.5 12824 12762 12801.45 这是.csv文件,大约有3000行,代码和你上面写的一样。 Rel
    • 您的日期格式与您原来的发布不同。现在,在 MM/DD/YYYY 中有日期之前,您在 YYYY-MM-DD 中有日期,因此您的格式不起作用。还要确保列之间的选项卡数正好是一个。
    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2021-07-25
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多