我有两个带有基因组坐标的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
答案 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