【问题标题】:Can't convert data.frame object to xts object: Gives POSIXlt error. (R)无法将 data.frame 对象转换为 xts 对象:给出 POSIXlt 错误。 (右)
【发布时间】:2017-05-29 13:26:18
【问题描述】:

我正在尝试将源自 .csv 的 data.frame 对象转换为 xts 对象。它没有正确转换为 xts 对象,而是给出了错误:

as.POSIXlt.character(x, tz, ...) 中的错误:字符串不是标准的明确格式

我尝试将 Date 列更改为 Date 类,但无济于事。代码如下:

library(xts)
mydata <- read.csv("https://sites.google.com/site/jonspinney/home/mba-6693-2017/edhec.csv?attredirects=0&d=1",header=TRUE,sep=",")
mydata$Date <- as.POSIXlt(mydata$Date, format = "%m/%d/%Y")
mydata <- as.xts(mydata)
class(mydata$Date)
class(mydata)

【问题讨论】:

    标签: r time-series xts


    【解决方案1】:

    当您在数据帧上调用通用函数as.xts 时,将调用xts:::as.xts.data.frame。默认情况下,它期望您的数据框的row.names 是DateTime,而您的mydata 的第一列是DateTime,而row.names(mydata) 给出1, 2, 3, 4, ...,这对于as.POSIXlt 来说肯定不是可识别的字符串格式或as.POSIXct 转换。

    由于您已经将Date 列排列为DateTime 格式(POSIXlt 格式),您可以直接使用xts

    oo <- xts(mydata[-1], mydata[[1]])
    
    str(oo)
    #An ‘xts’ object on 1993-12-31/2015-11-30 containing:
    #  Data: num [1:264, 1:9] 100 100.4 100.5 99.5 97 ...
    # - attr(*, "dimnames")=List of 2
    #  ..$ : NULL
    #  ..$ : chr [1:9] "CA" "SB" "EM" "EMN" ...
    #  Indexed by objects of class: [POSIXlt,POSIXt] TZ: 
    #  xts Attributes:  
    # NULL
    
    class(oo)
    #[1] "xts" "zoo"
    

    【讨论】:

      【解决方案2】:

      您可以使用read.zooas.xts 将其设为单行:

      myData <- as.xts(read.zoo("https://sites.google.com/site/jonspinney/home/mba-6693-2017/edhec.csv?attredirects=0&d=1",header=TRUE,sep=",", format = "%m/%d/%Y" ))
      
      > str(myData)
      An ‘xts’ object on 1993-12-31/2015-11-30 containing:
        Data: num [1:264, 1:9] 100 100.4 100.5 99.5 97 ...
       - attr(*, "dimnames")=List of 2
        ..$ : NULL
        ..$ : chr [1:9] "CA" "SB" "EM" "EMN" ...
        Indexed by objects of class: [Date] TZ: UTC
        xts Attributes:  
       NULL
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-07
        • 2014-05-17
        • 2021-11-12
        • 2011-09-26
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多