假设我有两个表:
df1:
start end
15 20
22 32
35 52
df2:
point
12
16
17
21
26
31
43
我想把这两个表连接起来,这样我就可以知道哪些点在范围之间:
start end point
15 20 16
15 20 17
22 32 26
22 32 31
35 52 43
如何在R中执行此操作?我知道当两个表有开始和结束时,我可以使用foverlap
来连接两个表,但当其中一个表只有一个点时,我不知道如何做到这一点。
我们可以使用fuzzy_join
library(fuzzyjoin)
fuzzy_inner_join(df1, df2, by = c('start' = 'point', 'end' = 'point'),
match_fun = list(`<=`, `>=`))
# A tibble: 5 x 3
# start end point
# <int> <int> <int>
#1 15 20 16
#2 15 20 17
#3 22 32 26
#4 22 32 31
#5 35 52 43
数据
df1 <- structure(list(start = c(15L, 22L, 35L), end = c(20L, 32L, 52L
)), class = "data.frame", row.names = c(NA, -3L))
df2 <- structure(list(point = c(12L, 16L, 17L, 21L, 26L, 31L, 43L)), class = "data.frame", row.names = c(NA,
-7L))