【发布时间】:2018-04-11 13:38:14
【问题描述】:
我正在尝试基于公共列“键”合并两个数据表 A 和 B 的行,但 R 无法处理合并如此大的数据表。它大约有 3000 万行 有什么方法可以将它们合并到数据表中或转换为列表?
编辑:
我试过了
merge(dt1,dt2, by ="key", all.x = TRUE)
我说错了
错误:无法分配大小为 802 Mb 的向量
这是我的数据的示例
数据表1
key || age || ctg || total_spend
==================================
key1 || 45 || 1 || 1026
key2 || 26 || 2 || 1574
key3 || 45 || 1 || 64
key4 || 32 || 1 || 1610
key5 || 41 || 1 || 884
数据表2
key || age || ctg || total_income (lacs)
==========================================
key1 || 45 || 1 || 7.5
key2 || 26 || 2 || 6
key3 || 45 || 1 || 4
key5 || 41 || 1 || 5.3
【问题讨论】:
-
你试过什么?这些试验的结果是什么?
-
我没有得到结果。我尝试了 merge(dt1,dt2, by ="key", all.x = TRUE).. 我收到错误消息“错误:无法分配大小为 802 Mb 的向量”
-
您的计算机有多少内存可用?你在使用
data.table包吗? benchmarks 有多达 20 亿 = 20 亿行。 (需要足够大的硬件。) -
您可以考虑将数据存储在内存中的替代方法,例如 SQL 类型的数据库。对于大型数据集,我使用 MonetdbLite 包取得了很好的成功(参见github.com/hannesmuehleisen/MonetDBLite-R)
-
请edit 提出您的问题并提供minimal reproducible example 包括您的样本的预期输出(希望能代表您的完整数据集。) - 谢谢。
标签: r list merge data.table