将不同的日期时间与不同的数据帧对齐

时间:2016-09-12 14:14:28

标签: r

我很难找到一个解决方案,用于对齐来自不同数据帧的两列。我正在尝试合并这两个数据帧,以便为两个数据帧获得相同的观察时间。我已经尝试了很多这里提供的解决方案,特别是从动物园和xts合并,但大多数在我的情况下都不可用。一些虚拟代码。

df1

df2<-structure(list(datetime = structure(1:10, .Label = c("2004-01-03 03:00:00", 
"2004-01-03 12:00:00", "2004-01-03 15:00:00", "2004-01-03 21:00:00", 
"2004-01-04 03:00:00", "2004-01-04 12:00:00", "2004-01-04 15:00:00", 
"2004-01-04 21:00:00", "2004-01-05 03:00:00", "2004-01-05 12:00:00"
), class = "factor"), value = c(-1.7, -2.2, -2.5, -3.9, -5.5, 
-5.6, -6, -6.7, -7.8, -7.6)), .Names = c("datetime", "value"), class = "data.frame", row.names = c(NA, 
-10L))

DF2

datetime    value   datetime    value
2004-01-03 03:00:00 NA      2004-01-03 03:00:00 -1.7
2004-01-03 12:00:00 NA      2004-01-03 12:00:00 -2.2
2004-01-03 15:00:00 NA      2004-01-03 15:00:00 -2.5
2004-01-03 21:00:00 -12.7   2004-01-03 21:00:00 -3.9
2004-01-10 03:00:00 -12.9   2004-01-04 03:00:00 -5.5
2004-01-10 12:00:00 -7.9    2004-01-04 12:00:00 -5.6
2004-01-10 15:00:00 -6.2    2004-01-04 15:00:00 -6
2004-01-10 21:00:00 -14     2004-01-04 21:00:00 -6.7
2004-01-11 03:00:00 -11.7   2004-01-05 03:00:00 -7.8
2004-01-11 12:00:00 NA      2004-01-05 12:00:00 -7.6

我希望得到这样的东西:

{{1}}

提前致谢。

编辑:

我忘了提到原始数据帧有不同的记录数。这是合并这些数据的主要问题。

后来编辑。 我发现从plyr加入就可以了。

1 个答案:

答案 0 :(得分:0)

转换为动物园,同时确保它们都是POSIXct,然后合并。 (可选)转换回data.frame。

library(zoo)

z1 <- read.zoo(df1)
z2 <- read.zoo(df2, tz = "")

z <- merge(z1, z2)

fortify.zoo(z)