R:如何交叉两个基因组范围

时间:2016-03-11 14:49:54

标签: r intervals

我有两个带有基因组坐标的DF(让我们说DF A和B)。我想要交叉A和B.每个A条目拥有多个B条目。我想要的是为A中的每个条目输出B中与A重叠的特定列的最大值。我尝试使用subsetByOverlaps,但它并不是我想要的。例如:

A
chr start   end
chr1    10  100 
chr2    5   200 

B
chr start   end value
chr1    20  30  5
chr1    30  45  10
chr1    40  50  2
chr1    50  80  7
chr2    10  20  5
chr2    100 110 8
chr2    150 170 3

给我

 chr start  end value
chr1    10  100    10
chr2     5  200     8

1 个答案:

答案 0 :(得分:0)

这是将A数据框扩展为B长度并逐行比较查找每个组的max的一种方法:

A2 <- unique(A)[match(B$chr, A$chr),]
ind <- B$start >= A2$start & B$end <= A2$end
A$value <- tapply(B$value[ind], B$chr[ind], FUN=max)
A
#   chr start end value
#1 chr1    10 100    10
#2 chr2     5 200     8