【发布时间】:2013-11-03 00:29:51
【问题描述】:
我有一张坐标(start,end)的表格。 500000 个片段和另一个带有 60000 个单一坐标的表,我想与以前的片段匹配。即,对于dtCoords 表中的每条记录,我需要在dtFrags 表中搜索具有相同chr 和startcoordend 的记录(并从中检索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。以防万一,我把我的真实桌子放在存档here 中。解压到您的工作目录后,可以使用以下代码加载表:
dtCoords <- fread("dtCoords.txt", sep="\t", header=TRUE)
dtFrags <- fread("dtFrags.txt", sep="\t", header=TRUE)
【问题讨论】:
-
我现在没有办法运行 R,但这个问题对我来说似乎很有趣。我认为首先将数据除以染色体,然后我希望您在该范围内没有重复的坐标,然后根据开始和位置制作坐标列。然后稍后与该坐标合并。如果到那时还没有解决,我明天再讨论这个问题
标签: r data.table