我想在样本(NE_id
)之间找到完全相同的基因组间隔。
我的输入:
chr start_call end_call NE_id
chr1 150 200 NE01
chr1 150 200 NE02
chr2 100 150 NE01
chr2 100 160 NE02
chr3 200 300 NE01
chr3 200 300 NE02
我的预期输出:
chr start_call end_call NE_id
chr1 150 200 NE01, NE02
chr3 200 300 NE01, NE02
在此示例中,chr2
基因组间隔有一些重叠,但它不对应完全相同的基因组间隔(大小差异== 10
)。
非常感谢。
答案 0 :(得分:2)
如果dat
是数据,您可以尝试:
res <-aggregate(NE_id~., data=dat, FUN=I)
res[sapply(res$NE_id,length)>1,]
# chr start_call end_call NE_id
# 3 chr1 150 200 NE01, NE02
# 4 chr3 200 300 NE01, NE02
答案 1 :(得分:1)
这是一个GenomicRanges解决方案
library(GenomicRanges)
NE01 <- GRanges(c("chr1","chr2","chr3"),
IRanges(c(150,100,200),c(200,150,300)),
ID=rep("NE01",3))
NE02 <- GRanges(c("chr1","chr2","chr3"),
IRanges(c(150,100,200),c(200,160,300)),
ID=rep("NE02",3))
findOverlaps(NE01,NE02,type="equal")
我只需要输入全部内容,因为我没有数据框,您只需在制作GRanges对象时指定数据框列。