我最近开始使用data.table包来识别符合某些条件的表列中的值。虽然我设法完成了大部分工作,但现在我遇到了这个问题:
我有一个数据表table1,其中第一列(标签)是一个组ID,第二列o.cell是一个整数。关键在于“标签”
我有另一个数据表table2,其中包含一列:“cell”。
现在,我正在尝试为table1中的每个组找到table2的“cell”列中“o.cell”列中的值。 table1有大约400K行,分为800个不等大小的组。 table2有大约1.3M行的唯一单元号。列“o.cell”table1中的单元格编号可以在多个组中找到。
这似乎是一项简单的任务,但我无法找到正确的方法。根据我构建调用的方式,它或者给我一个不同于我预期的结果,或者它永远不会完成,我必须结束R任务,因为它被冻结(我的机器有24 GB RAM)。
以下是我尝试过的调用的“变体”之一的示例:
overlap <- table1[, list(over.cell =
o.cell[!is.na(o.cell) & o.cell %in% table2$cell]),
by = labels]
我很确定这是使用数据表执行此任务的错误方法,最重要的是我无法得到我想要的结果。
我将非常感谢任何帮助。感谢。
答案 0 :(得分:0)
这听起来像是你的设置:
dt1 = data.table(labels = c('a','b'), o.cell = 1:10)
dt2 = data.table(cell = 4:7)
你只想做一个简单的合并:
setkey(dt1, o.cell)
dt1[dt2]
# o.cell labels
#1: 4 b
#2: 5 a
#3: 6 b
#4: 7 a