此问题已在此处有答案:
Join two datasets based on an inequality condition(4个答案)
2天前关闭。
假设我有以下内容:
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 11:59:00","2015-10-26 12:00:10"))
values2 <- c("A","C")
df1 <- data.frame(dates1, values1)
df2 <- data.frame(dates2, values2)
我想把df2中的values2合并到df1中,我想在df1中的时间戳之前选择df2中最近的时间戳。例如,对于12:00:00,我想选择11:59:00,而不是12:00:10(这是最近的,但不是12:00:00之前最近的)。我的预期输出是:
dates1 values2 values1 dates2
1: 2015-10-26 12:00:00 A a 2015-10-26 11:59:00
2: 2015-10-26 13:00:00 c b 2015-10-26 12:00:10
3: 2015-10-26 14:00:00 c c 2015-10-26 12:00:10
使用data.table中的roll =“nearest”选项不会产生预期的结果。有人能帮帮我吗?
使用data.table中的roll =“nearest”选项,不会产生预期的结果
1条答案
按热度按时间n53p2ov01#
你可以用
dplyr::join_by()
和dplyr::closest()
来实现。