r中数据帧中的重叠间隔

时间:2015-10-28 16:25:18

标签: r dataframe

我正在尝试用R研究基因组数据,我已经看到了几个主题,它们有两个数据帧和重叠区间相关的很好的答案。我的问题是我有一个重叠间隔的数据帧,我想合并,即:

chrom   start   stop
 5       100     105
 5       100     105
 5       200     300
 9       275     300
 9       280     301

我想结束这样的事情:

chrom   start   stop
 5       100     105
 5       200     300
 9       275     301

我也在努力提高编码水平,所以我想知道最优雅的方法是什么。希望这不是多余的其他查询,

1 个答案:

答案 0 :(得分:15)

使用GenomicRanges :: reduce:

require(GenomicRanges)
as.data.frame(reduce(GRanges(df$chrom, IRanges(df$start, df$stop))))
#   seqnames start end width strand
# 1        5   100 105     6      *
# 2        5   200 300   101      *
# 3        9   275 301    27      *

也可以使用data.table::foverlapsGenomicRanges::findOverlaps,但不是那么简单。