我有一张坐标 ( start
, end
) 的表格。500000 个片段和另一个带有 60000 个单个坐标的表,我想与以前的片段匹配。即,对于表中的每条记录,dtCoords
我需要在dtFrags
表中搜索具有相同chr
和start
<= coord
<=的记录end
(并type
从该记录中检索dtFrags
)。为此使用 R 是个好主意,还是我应该看其他语言?
这是我的例子:
require(data.table)
dtFrags <- fread(
"id,chr,start,end,type
1,1,100,200,exon
2,2,300,500,intron
3,X,400,600,intron
4,2,250,600,exon
")
dtCoords <- fread(
"id,chr,coord
10,1,150
20,2,300
30,Y,500
")
最后,我想要这样的东西:
"idC,chr,coord,idF,type
10, 1, 150, 1, exon
20, 2, 300, 2, intron
20, 2, 300, 4, exon
30, Y, 500, NA, NA
"
我可以通过将表拆分为子表来简化任务chr
,因此我只关注坐标
setkey(dtCoords, 'chr')
setkey(dtFrags, 'chr')
for (chr in unique(dtCoords$chr)) {
dtCoordsSub <- dtCoords[chr];
dtFragsSub <- dtFrags[chr];
dtCoordsSub[, {
# ????
}, by=id]
}
但我仍然不清楚我应该如何在里面工作......我将非常感谢任何提示。
UPD。以防万一,我把我的真实表放在了这里的存档中。解压到您的工作目录后,可以使用以下代码加载表:
dtCoords <- fread("dtCoords.txt", sep="\t", header=TRUE)
dtFrags <- fread("dtFrags.txt", sep="\t", header=TRUE)