我有一个包含约500000个片段的坐标(
以下是我的示例:
最后,我希望得到类似这样的结果:
start
,end
)的表格和另一个包含60000个单一坐标的表格,我想将它与前一个表格中的片段匹配。也就是说,对于dtCoords
表格中的每个记录,我需要在dtFrags
表格中搜索具有相同chr
和start
<=coord
<=end
(并从此记录检索dtFrags
的type
)。我是否应该使用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]
}
但是我仍然不清楚应该如何在内部工作... 如果有任何提示,我将非常感激。
更新。 以防万一,我将我的真实表格放在存档中这里。 解压到您的工作目录后,可以使用以下代码加载表:
dtCoords <- fread("dtCoords.txt", sep="\t", header=TRUE)
dtFrags <- fread("dtFrags.txt", sep="\t", header=TRUE)