我在为即将到来的夏令时转换合并/加入数据时遇到问题。我的时间向量d
应该是控制时间向量,所以当我加入缺少数据的数据时,我只得到NA值。这通常很有效。然而,在即将到来的'2015-10-25 02:00:00'
期间,它出现了可怕的错误。
数据示例:
d <- seq.POSIXt(from = as.POSIXct("2015-10-25 00:00:00", "%Y-%m-%d %H:%M:%S", tz = ""),
to = as.POSIXct("2015-10-25 23:00:00", "%Y-%m-%d %H:%M:%S", tz = ""), by = "hour")
df1 <- data.frame(Date = d, value1 = 1:25)
df2 <- data.frame(Date = as.POSIXct(format(d, "%Y-%m-%d %H:%M:%S"), tz = ""), value2 = 26:50)
require(dplyr)
df <- left_join(df1, df2, by = "Date")
df <- merge(df1, df2, by = "Date", all.x = TRUE)
left_join
和merge
都会给出错误的结果,我不确定会出现什么问题。好吧,我可以看到R不知道如何处理这两个重复的小时 - 这是完全可以理解的。这两个时间序列都是POSIXct
,但显然我遗漏了一些信息?你怎么能处理这个?我更喜欢基础R解决方案。
如果你需要从不同的数据集中做更多的连接,它会成倍地变得更糟。我需要加入7,它变得越来越糟。
正确的结果是:
result <- data.frame(Date = d, var1 = df1[, 2], var2 = df2[, 2])