【问题标题】:Convert data.frame objects to zoo objects将 data.frame 对象转换为 zoo 对象
【发布时间】:2014-09-25 10:22:47
【问题描述】:

我正在尝试将 data.frame 对象转换为 zoo(动物园包)对象。这样做的第一步是使用 as.Date 将我的数据 (df) 中的日期列转换为日期类,格式为 D/M/Y。数据如下:

Date          Return
1986-02-03     0.10
1986-02-04     0.15
1986-02-05     0.16
1986-02-06     0.18

使用以下代码时:

df.data <- as.Date(df$Date)

它转换为类,但日期为 Y-M-D 格式。使用以下代码时

df.data <- as.Date(df$Date, format = "%d/%m/%y")

它给出所有值的 NA。问题出在哪里?

系统:小牛64位

【问题讨论】:

  • 这不会创建动物园对象zoo(df[,2],as.Date(df$Date))如果你想格式化你可以使用zoo(df[,2], format(as.Date(df$Date), "%d/%m/%y"))的日期
  • 是的。我遇到的问题是带有格式选项的 as.Date 。我试过你的;第一个工作正常,但第二个为所有日期提供 NA。 @akrun
  • 我无法重现 NA。我作为解决方案发布。

标签: r


【解决方案1】:

使用read.zoo:

z <- read.zoo(DF)

注意:我们假设DF 是:

DF <- data.frame(Date = c("1986-02-03", "1986-02-04", "1986-02-05", "1986-02-06"), 
                 Return = c(0.1, 0.15, 0.16, 0.18))

【讨论】:

    【解决方案2】:
    df <- structure(list(Date = c("1986-02-03", "1986-02-04", "1986-02-05", 
    "1986-02-06"), Return = c(0.1, 0.15, 0.16, 0.18)), .Names = c("Date", 
    "Return"), class = "data.frame", row.names = c(NA, -4L))
    
    library(zoo)
     zoo(df[,2], format(as.Date(df$Date), "%d/%m/%y"))
    #03/02/86 04/02/86 05/02/86 06/02/86 
    #   0.10     0.15     0.16     0.18 
    
    zoo(df[,2],as.Date(df$Date))
    #1986-02-03 1986-02-04 1986-02-05 1986-02-06 
    #   0.10       0.15       0.16       0.18 
    

    【讨论】:

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