Я хотел бы знать, как группировать линии с перекрытием координат.
Я пытаюсь объединить перекрытия, основанные на координатах в сегменте (линии).
Например, у меня есть:
tibble(
target = c("a", "a", "a", "b", "b", "c", "c", "c", "c"),
query = c("D", "D", "D", "D", "E", "D", "D", "E", "E"),
start = c( 3, 10, 30, 8, 16, 7, 9, 16, 25),
end = c( 12, 15, 45, 15, 20, 12, 14, 32, 31)
) -> d
или
# A tibble: 9 x 4
target query start end
<chr> <chr> <dbl> <dbl>
1 a D 3 12
2 a D 10 15
3 a D 30 45
4 b D 8 15
5 b E 16 20
6 c D 7 12
7 c D 9 14
8 c E 16 32
9 c E 25 31
Целевой запрос пары представляет собой отображение областей равных между ними, но иногда пара имеет более одного совпадения, когда случается, что совпадения могут перекрываться.
Итак, я пытаюсь сделать это
> d %>%
+ group_by(target, query) %>%
+ arrange(start,end) %>%
+ summarise(
+ start = min(start),
+ end = max(end)
+ )
# A tibble: 5 x 4
# Groups: target [?]
target query start end
<chr> <chr> <dbl> <dbl>
1 a D 3 45
2 b D 8 15
3 b E 16 20
4 c D 7 14
5 c E 16 32
Как видите, вывод неправильный. Каким-то образом я думаю, что я должен группировать по линиям с перекрытием, но я не знаю, как это сделать.
Ожидаемый результат:
target query start end
<chr> <chr> <dbl> <dbl>
1 a D 3 15
2 a D 30 45
3 b D 8 15
4 b E 16 20
5 c D 7 14
6 c E 16 32
Этот вид goup_by
, использующий перекрытие, должен использоваться для других подходов.
Любая помощь приветствуется.
Заранее спасибо