我正在尝试用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
我也在努力提高编码水平,所以我想知道最优雅的方法是什么。希望这不是多余的其他查询,
答案 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::foverlaps
或GenomicRanges::findOverlaps
,但不是那么简单。