【发布时间】:2016-01-25 14:39:57
【问题描述】:
我有两个 data.frame,每个都有一个时间序列。我的目标是使用 df2 的时间序列来标记 df1 中最近的时间戳。 df2 中的每个时间戳只能标记 df1 中的一个时间戳!
dates1 <- as.POSIXct(c("2015-10-26 12:00:00","2015-10-26 13:00:00","2015-10-26 14:00:00"))
values1 <- c("a","b","c")
dates2 <- as.POSIXct(c("2015-10-26 12:05:00","2015-10-26 13:55:00"))
values2 <- c("A","C")
df1 <- data.frame(dates1, values1)
df2 <- data.frame(dates2, values2)
期望的结果:
dates2 values2 values1
1: 2015-10-26 12:00:00 A a
2: 2015-10-26 13:00:00 NA b
3: 2015-10-26 14:00:00 C c
为了实现这一点,我将 data.frames 转换为 data.tables 并使用滚动连接“最近”,如下所示:
dt1 <- data.table(df1)
dt2 <- data.table(df2)
setkey(dt1,"dates1")
setkey(dt2,"dates2")
dt3 <- dt2[dt1,roll = "nearest"]
dates2 values2 values1
1: 2015-10-26 12:00:00 A a
2: 2015-10-26 13:00:00 A b
3: 2015-10-26 14:00:00 C c
values2“A”被使用了两次,一次用于 12:00 时间戳,一次用于 13:00。我希望每个 value2 只使用一次,并查阅 data.table 手册我希望使用选项 mult = "first" 来解决这个问题。
dt3 <- dt2[dt1,roll = "nearest", mult = "first"]
这导致相同的输出,“A”被使用了两次。我的错误在哪里?
【问题讨论】:
标签: r join data.table