Объединить, используя точки в таблице в пределах диапазонов в другой таблице в R - PullRequest
1 голос
/ 14 апреля 2020

Допустим, у меня есть 2 таблицы:

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, но я не знаю, как это сделать, если одна из таблиц имеет только одну точку.

1 Ответ

1 голос
/ 14 апреля 2020

Мы можем использовать 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...