【发布时间】:2016-05-06 01:31:50
【问题描述】:
情况:
我有一个 CSV 文件 A 有两列 Customer ID 和 Entry date。
A 包含大约 1.500.000 个观测值。
我有另一个 CSV 文件 B,其中有一列 Customer ID。
B 是 A 的一个较小的子集。
目标:
由于表B 中缺少有关他们进入日期的信息,我想从表A 中获取该信息并将其全部写入一个新表C。
当前进度:
我从A 创建了 10 个子集 S1、...、S10,并从每个子集中创建了最大客户 ID。在for 循环中,我遍历B 的所有条目并检查B 是否位于其中一个子集中(通过子集的customer ID 和max c ID)。一旦我找到了一个我应该在其中找到客户 ID 的子集,我就使用函数 which 在 A 中查找 B 的元素。
这太慢了。
没有其他更快的方法吗?
哪些是 R 中使用 CSV 文件的最佳对象,因为目前,A 是一个数据框,B 是一个大整数.
【问题讨论】:
-
merge(甚至更快的 data.table 或 dplyr 连接)。 -
Duh :D 非常感谢 - 这就是我想要的 :)))
-
这是合并的前兆,但如果 B 是整数,
A[A$CID %in% B, ]将起作用,并且 CID 是 A 中您的客户 ID 所在的列。使用数据表,您可以与setDT(A); setkey(A,CID); A[J(B)]进行显式“合并” -
@blueeyes0710 - 我发现这个data.table cheat sheet 在学习这个非常强大的软件包时很有用