使用R中另一个表的范围内的表中的点进行连接



假设我有两个表:

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))

最新更新