【问题标题】:Xts conversion error (do not match the length of object)Xts转换错误(与对象长度不匹配)
【发布时间】:2016-04-20 05:32:19
【问题描述】:

我正在将 csv 文件导入 R,创建 3x3 数据框,并尝试将数据框转换为 xts 对象。但我收到错误消息“与对象的长度不匹配”。

#DATSB <- fread("C:/Temp/GoogleDrive/R/temp.csv", select = c("DateTime","Last","Volume"))
#that results in following dput() output:
DATSB <- structure(list(DateTime = c("3/28/2016 20:37", "3/28/2016 20:36","3/28/2016 20:35"), Last = c(1221.7, 1221.8, 1221.9), Volume = c(14L,2L, 22L)), .Names = c("DateTime", "Last", "Volume"), row.names = c(NA,3L), class = "data.frame")

setDF(DATSB)
DATSB$DateTime <- strptime(DATSB$DateTime, format = "%m/%d/%Y %H:%M") 
DATSBxts <- as.xts(DATSB[, -2], order.by = as.Date(DATSB$DateTime, "%Y/%m/%d %H:%M"))

     DateTime     Last     Volume
1 3/28/2016 20:37 1221.7     14
2 3/28/2016 20:36 1221.8      2
3 3/28/2016 20:35 1221.9     22

确切的错误消息是“as.matrix.data.frame(x) 中的错误: 暗淡 [产品 12] 与对象 [14] 的长度不匹配”

不知何故,问题的根源在于 Volume 列。没有该列,它可以工作。不幸的是无法弄清楚。感谢您的帮助!

【问题讨论】:

    标签: r xts


    【解决方案1】:

    DATSB[, -2] 这里有一个错字,纠正它可以正常工作。 xts 的一般主题是,

    xts(data[,-date_column], order.by = data[,date_column])
    

    coredata(DATSBxts)index(DATSBxts) 也是有用的函数

    DATSBxts  = xts(DATSB[, -1], order.by = DATSB[,1] ,dateFormat = "%Y/%m/%d %H:%M:%S");rev(DATSBxts)
    
    
    DATSBxts
    #                  Last Volume
    #2016-03-28 20:35:00 1221.9     22
    #2016-03-28 20:36:00 1221.8      2
    #2016-03-28 20:37:00 1221.7     14
    

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 2021-02-16
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多