library(data.table)
# Convert your dataframes to data.tables
dt1 <- as.data.table(df1)
dt2 <- as.data.table(df2)
# Set keys for rolling join
setkey(dt1, num)
setkey(dt2, num)
# Perform the rolling join
result <- dt2[dt1, roll = Inf]
# combine
cbind(dt2[,1, with = FALSE], result)
1条答案
按热度按时间5w9g7ksd1#
我们可以使用
join_by()
dplyr >= 1.1.0
我们现在可以
滚动连接
滚动联接是不等联接的一种变体,它限制从不等联接条件返回的结果。当没有精确匹配时,它们对于向前/向后“滚动”最接近的匹配很有用。若要构造滚动联接,请使用
closest()
Package 不等式。closest(expr)
expr必须是涉及以下之一的不等式:
>, >=, <, or <=
例如,
closest(x >= y)
被解释为:对于x中的每个值,找到y中小于或等于该x值的最接近的值。closest()
将始终使用左侧表(x)作为主表,并使用右侧表(y)作为查找最接近匹配的表,而不管如何指定不等式。例如,closest(y$a >= x$B)将始终被解释为closest(x$b <= y$a)。join_by()
data.table
数据: