【发布时间】:2020-05-13 17:53:30
【问题描述】:
我有一个相对较大的 data.table(大约 10 亿行和 30 列),并且正在尝试对其进行子集化以删除一些我不感兴趣的类别。category 变量是一个大约 30标签。但是,当我这样做时,我的会话一直被杀死。有没有办法对 data.table 进行子集化?
鉴于我的 data.table 是 dt,导致崩溃的行是:
dt <- dt[!category %in% c('f', 'g')]
关于如何避免此问题的任何建议?抱歉,没有一个可重复的例子,这种规模的数据显然很难。我正在使用 R 版本 3.6.1 和 data.table 版本 1.12.9。
【问题讨论】:
-
有没有办法对 data.table 进行子集化? data.table can't delete rows by reference yet
-
您是否尝试过基于二进制搜索的“不加入子集”
dt[!c('f', 'g'), on = "category"]。另见2。在小插图Secondary indices and auto indexing 中使用参数和二级索引进行快速子集化 -
我之前没有尝试过“不加入子集” - 这解决了问题,感谢@Henrik!
-
好!另请参阅
?data.table中的示例部分:# joins as subsets;# fast *keyed* subsets。干杯。 -
NOT IN 以前在 SQL 中效率很低,也许这里也有效
标签: r data.table