我想找到完全相同的基因组间隔之间的样本(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)。
非常感谢。
发布于 2014-07-16 09:13:08
如果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发布于 2014-07-16 09:01:30
这里有一个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对象时指定数据帧列。
https://stackoverflow.com/questions/24776223
复制相似问题