gpt4 book ai didi

r - 如何有效地匹配R中的两个数据表

转载 作者:行者123 更新时间:2023-12-04 22:44:07 24 4
gpt4 key购买 nike

情况:
我有一个 CSV 文件 A有两列 Customer IDEntry date .A包含大约 1.500.000 个观测值。

我还有另一个 CSV 文件 B单列 Customer ID .BA 的较小子集.

目标:
由于表B 中缺少有关他们进入日期的信息。 ,我想从表 A 中获取该信息并将其全部写入新表C .

当前进度:
我从 A 创建了 10 个子集 S1,...,S10以及每个子集的最大客户 ID。在 for循环,我遍历 B 的所有条目并检查 B位于子集之一内(通过子集的customer IDmax c ID)。一旦我找到了一个我应该在其中找到客户 ID 的子集,我就会使用函数 which在 A 中寻找 B 的元素。

这非常慢。

没有其他更快的方法吗?

哪些是 R 中使用 CSV 文件的最佳对象,目前,A是一个数据帧,B是一个大整数。

最佳答案

我会使用 data.table .执行此操作非常简单(请参阅最后一个命令!),并且使用所谓的键控连接非常快。基本上你从 b 中查找条目在 a使用他们的公用 key (在您的情况下为 "Customer ID" )。举个例子:

require(data.table)
a <- data.table(id=1:10,date=as.Date(1:10))
setkey(a,id)
b <- data.table(id=4:6)
setkey(b,id)

a[b]
# id date
#1: 4 2016-02-01
#2: 5 2016-02-02
#3: 6 2016-02-03

在您给定的示例中,您将键入此内容,以读取您的数据并进行键控连接以获取表 b 中每个人的输入日期:
a <- fread( "A.csv" )
setkey(a, "Customer ID")
b <- fread( "B.csv" )
setkey(a, "Customer ID")

c <- a[b]

关于r - 如何有效地匹配R中的两个数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com