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