我需要在单个数据集中查找重叠的范围,但需要为每个ID或因子级别找到它们。任何协助将不胜感激!
我得到的结果如下所示:
library(dplyr)
df_foo = read.table(
textConnection("Class Min Max
A 500 630
A 100 200
B 100 200
A 210 310
A 200 210
B 210 310
A 510 530
B 200 210
A 705 800
B 500 630
B 510 530
B 705 800"), header = TRUE
)
c = outer(df_foo$Max, df_foo$Min, ">")
d = outer(df_foo$Min, df_foo$Max, "<")
df_foo %>%
mutate(Overlap = apply(c & d, 1, sum) > 1
)
我得到的结果如下所示:
Class Min Max Overlap
1 A 500 630 TRUE
2 A 100 200 TRUE
3 B 100 200 TRUE
4 A 210 310 TRUE
5 A 200 210 TRUE
6 B 210 310 TRUE
7 A 510 530 TRUE
8 B 200 210 TRUE
9 A 705 800 TRUE
10 B 500 630 TRUE
11 B 510 530 TRUE
12 B 705 800 TRUE
但我想要像这样找到A和B每个级别之间的重叠部分:
Class Min Max Overlap
1 A 500 630 TRUE
2 A 100 200 FALSE
3 B 100 200 FALSE
4 A 210 310 FALSE
5 A 200 210 FALSE
6 B 210 310 FALSE
7 A 510 530 TRUE
8 B 200 210 FALSE
9 A 705 800 FALSE
10 B 500 630 TRUE
11 B 510 530 TRUE
12 B 705 800 FALSE