我試圖找到一種方法來摺疊具有相交範圍的行,用「開始」和「停止」列表示,並將摺疊值記錄到新列中。例如,我有這個數據幀:在R中摺疊相交區域
my.df<- data.frame(chrom=c(1,1,1,1,14,16,16), name=c("a","b","c","d","e","f","g"), start=as.numeric(c(0,70001,70203,70060, 40004, 50000872, 50000872)), stop=as.numeric(c(71200,71200,80001,71051, 42004, 50000890, 51000952)))
chrom name start stop
1 a 0 71200
1 b 70001 71200
1 c 70203 80001
1 d 70060 71051
14 e 40004 42004
16 f 50000872 50000890
16 g 50000872 51000952
,我試圖找到重疊的範圍,並記錄在「開始」和「停止」的坍塌重疊行和摺疊的行的名稱所覆蓋的最大範圍,所以我會得到這樣的:
chrom start stop name
1 70001 80001 a,b,c,d
14 40004 42004 e
16 50000872 51000952 f,g
我想我可以用包IRanges這樣的:
library(IRanges)
ranges <- split(IRanges(my.df$start, my.df$stop), my.df$chrom)
但後來我有麻煩塌陷列:我有線索d與findOvarlaps但這
ov <- findOverlaps(ranges, ranges, type="any")
但我不認爲這是正確的。
任何幫助將不勝感激。
謝謝! -fra
我編輯的文本,以反映該數據更好地加入在0開始的第一位置不管是用方法的建議CHROM 14沒有正確分組,可以請你告訴我爲什麼?謝謝! – user971102