3

我最近开始使用 data.table 包来识别表列中符合某些条件的值。尽管我设法完成了大部分工作,但现在我遇到了这个问题:

我有一个数据表 table1,其中第一列(标签)是组 ID,第二列 o.cell 是整数。关键在“标签”上

我有另一个数据表 table2,其中包含一个列:“单元格”。

现在,我试图为table1 中的每个组查找table2 的“cell”列中的“o.cell”列中的值。table1 有大约 400K 行,分为 800 多个大小不等的组。table2 有大约 130 万行唯一单元格编号。可以在多个组中找到“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]

我很确定这是为这项任务使用数据表的错误方法,最重要的是我无法得到我想要的结果。

我将不胜感激任何帮助。谢谢。

4

1 回答 1

1

听起来这是您的设置:

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
于 2013-10-29T21:25:38.800 回答