【问题标题】:R Error: index is not in increasing orderR错误:索引不是按递增顺序排列的
【发布时间】:2016-09-20 18:03:00
【问题描述】:

注意:问题已在以下评论中解决

按照找到的here 中的答案尝试将data.frame 转换为xts 时出现以下错误。

.xts(DA[, 3:6], index = as.POSIXct(DAINDEX, format = "%m/%d/%Y %H:%M:%S", 中的错误: 索引未按升序排列

我无法找到有关此错误或解决方法的太多信息,因此非常感谢您提供任何帮助。

数据是每日标准普尔 500 指数,采用逗号分隔格式,包含以下列:“日期”“时间”“开盘价”“最高价”“最低价”“收盘价”。

下面是代码:

DA <- read.csv("SNP.csv", header = TRUE, stringsAsFactors = FALSE)
DAINDEX <- paste(DA$Date, DA$Time, sep = " ")
Data.hist <- .xts(DA[,3:6], index = as.POSIXct(DAINDEX, format = "%m/%d/%Y %H:%M:%S", tzone = "GMT"))

根据要求,一些数据行

structure(list(Date = c("5/20/2016", "5/19/2016", "5/18/2016", 
"5/17/2016", "5/16/2016", "5/13/2016"), Time = c("0:00:00", "0:00:00", 
"0:00:00", "0:00:00", "0:00:00", "0:00:00"), Open = c(2041.880005, 
2044.209961, 2044.380005, 2065.040039, 2046.530029, 2062.5), 
High = c(2058.350098, 2044.209961, 2060.610107, 2065.689941, 
2071.879883, 2066.790039), Low = c(2041.880005, 2025.910034, 
2034.48999, 2040.819946, 2046.530029, 2043.130005), Close = c(2052.320068, 
2040.040039, 2047.630005, 2047.209961, 2066.659912, 2046.609985
)), .Names = c("Date", "Time", "Open", "High", "Low", "Close"
), row.names = c(NA, 6L), class = "data.frame")

以上是dput(head(DA))的输出

【问题讨论】:

  • 您能在这里提供几行数据吗?使用dput(head(DA)) ...
  • @MartinDabbelJuSmelter 将在我回到我的计算机后立即执行!
  • @MartinDabbelJuSmelter 请查看已编辑的问题。实际上使用 dput 让我意识到数据是从最新到最旧排序的,而不是相反。如果您愿意,请留下答案,以便我接受。非常感谢您的帮助!

标签: r csv xts


【解决方案1】:

最简单的做法是使用常规 xts 构造函数而不是 .xts。它会检查索引是否排序正确,必要时对索引和数据进行排序。

Data.hist <- xts(DA[,3:6], as.POSIXct(DAINDEX, "%m/%d/%Y %H:%M:%S", "GMT"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2021-01-07
    • 2022-06-27
    • 1970-01-01
    • 2021-01-16
    • 2016-09-21
    相关资源
    最近更新 更多