R:使用R查找重叠区域

R:使用R查找重叠区域,r,genetics,R,Genetics,我有一个数据集,其中包含特定位置(脚手架)上分段的初始和最终位置,如果在同一个脚手架中存在分段,则其中一些分段与其他分段重叠 > head(jobs) JOB_N Genome Scaffold loc_i loc_f 1 PRJNA179522 Contig10285 1251 1502 1 PRJNA179522 Contig10285 1251 1602 2 PRJNA179522 Contig10285 1255 1499

我有一个数据集,其中包含特定位置(脚手架)上分段的初始和最终位置,如果在同一个脚手架中存在分段,则其中一些分段与其他分段重叠

> head(jobs)
JOB_N      Genome     Scaffold loc_i loc_f
     1 PRJNA179522 Contig10285  1251  1502
     1 PRJNA179522 Contig10285  1251  1602
     2 PRJNA179522 Contig10285  1255  1499
     2 PRJNA179522 Contig10285   828  1076
     2 PRJNA179522 Contig783     245  1487
     2 PRJNA179522 Contig783     822  1073    
我想要两件事:第一件是找到所有单个支架中的所有重叠区域。 第二种方法是获得一个新表,该表只包含每个“新”段的第一个和最后一个位置。输出将是:

JOB_N      Genome     Scaffold loc_i loc_f
     1 PRJNA179522 Contig10285  1251  1602
     2 PRJNA179522 Contig10285   828  1076
     2 PRJNA179522 Contig783     245  1487

提前感谢。

您已经指定了“单个支架”,但是您的示例输出有一个重复的支架。你想把
JOB\N
Genome
也包括在这些组中吗

如果是这样,一个
数据表
方法是分别为每个所需组找到
loc_i
loc_f
min
max


请参见
data中的
foverlaps
。表
IRanges中的
findOverlaps
,可能说明有误。我预计在每个支架中都会有很多片段(外显子)。正是因为这个原因,我需要找到所有的重叠区域。请注意,在我的示例中,#1和#2是重叠段,但#3不是。因此,在支架“Contig10285”中有两个独立的部分(不重叠的部分)。现在清楚了?无论如何谢谢你@好的,我想我现在明白你的意思了。我将对我的答案进行编辑
library(data.table)

dt <- as.data.table(jobs)

dt[, .(min_loc_i = min(loc_i), max_loc_f = max(loc_f)), by=.(JOB_N, Genome, Scaffold)]

#   JOB_N      Genome    Scaffold min_loc_i max_loc_f
#1:     1 PRJNA179522 Contig10285      1251      1602
#2:     2 PRJNA179521 Contig10285      1251      1499
#3:     2 PRJNA179522 Contig10285       828      1076
#4:     2 PRJNA179522   Contig783       245      1487
dt[, .(min_loc_i = min(loc_i), max_loc_f = max(loc_f)), by=.(Scaffold)]
#      Scaffold min_loc_i max_loc_f
#1: Contig10285       828      1602
#2:   Contig783       245      1487