【发布时间】:2016-07-01 05:09:40
【问题描述】:
我有一个包含 5 亿个条目的数据框,其中一些是重复的。服务器可以毫无问题地将数据帧保存在内存中,但所有应用 unique() 函数的尝试都会以服务器冻结而告终。
数据框的格式如下:
"id_A","id_B_C"
"1068095976599746","137459917707_10151666538852708"
"964549956973805","137459917707_10151666538852708"
"10154089033126355","137459917707_10151666538852708"
"548826058653873","137459917707_10151666538852708"
"1048575401891319","137459917707_10151666538852708"
"10209663598697145","137459917707_10151666538852708"
"10209718419385277","137459917707_10151666538852708"
条目(每一行)没有唯一的 ID,因此 id_A 和 id_B_C 的统一构成了唯一的条目 ID。我知道我可以通过根据 id_A 或 id_B_C 拆分数据框来应用唯一功能,但唯一 ID 的数量仍然在每个 1 亿左右。
有没有更优化的方法来删除重复的条目?
【问题讨论】:
-
你有data.frame或矩阵吗?
-
您可能应该使用
data.table或data.frame 以外的其他内容。另外,您能否澄清一下您所说的“我可以通过基于 id_A 或 id_B_C 拆分数据框来应用唯一功能,但每个唯一 ID 的数量仍然在 1 亿左右。”?您不是指组合这两列,而是以某种方式拆分数据?你能显示代码来解释你在说什么吗? -
另外,从实际的角度来看,我认为没有理由将 R 用于更适合关系数据库的东西。为什么不直接用 SQL 或其他方式进行预处理,然后将结果发送到 R? R 并不真正适用于大数据的 ETL。
-
如果
dfrm[ !duplicated(dfrm), ]没有成功,那么您可能需要投资更多 RAM、AWS 账户、学习 data.table 或学习 awk。仅仅因为一个大的数据集可以放入内存并不能保证你可以用它做任何有用的事情。您没有提供有关您的硬件资源的足够信息,无法提供更多建议。
标签: r