将data.frame对象转换为zoo对象

时间:2014-09-25 10:22:47

标签: r

我正在尝试将data.frame对象转换为zoo(zoo包)对象。这样做的第一步是使用as.Date将数据(df)中的日期列转换为Date类,格式为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。问题在哪里?

Sys:Mavericks 64bit

2 个答案:

答案 0 :(得分:2)

使用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))

答案 1 :(得分:1)

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