gpt4 book ai didi

r - 使用 plyr 在两列上加入两个海量数据帧

转载 作者:行者123 更新时间:2023-12-04 11:17:30 27 4
gpt4 key购买 nike

我有一个非常大的数据框,我需要在两列上连接到另一个数据框。我一直在使用 merge 来完成 ir,但 R 内存不足,表越大。是否有使用 dplyr 或 plyr 的类似解决方案?我听说他们需要更少的内存来完成。我通常知道如何在 plyr 中使用 join 函数,我正在努力解决的问题是通过两列进行连接。我一直在使用的合并语法如下:

Correlation_Table <- merge(Correlation_Table, inter, by.x = c(1,2), by.y = c(1,2), all.x = TRUE, all.y = TRUE)

例如,如果我有以下两个数据框:

> head(df1)
x y z a
1 1 2 429.57410 43.746670
2 2 3 717.98184 524.288886
3 3 4 601.66938 640.245469
4 4 5 87.41476 318.964765
5 5 6 586.22234 196.759991
6 6 7 619.82194 3.308136
> head(df2)
b c d
1 5 8 152.2855
2 6 9 191.5406
3 7 10 197.0520
4 8 11 175.4209
5 9 12 157.6239
6 10 13 136.3286

其中 df1 的 x 和 y 列是维度,而 df2 的 b 和 c 列也是维度,其他列是度量。我的目标是创建一个包含所有三个度量的新数据框,其中 df1.x 和 df1.y 的记录与 df2.a 和 df2.b 匹配。

这可以使用 plyr 吗?

最佳答案

你可以试试

library(dplyr)
res1 <- full_join(df1, df2, by=c('x'='b', 'y'='c'))

根据 ?full_join

by: a character vector of variables to join by. If ‘NULL’, the default, ‘join’ will do a natural join, using all variables with common names across the two tables. A message lists the variables so that you can check they're right. To join by different variables on x and y use a named vector. For example, ‘by = c("a" = "b")’ will match ‘x.a’ to ‘y.b’.

比较结果

res2 <-  merge(df1, df2, by.x = c(1,2), by.y = c(1,2),
all.x = TRUE, all.y = TRUE)

注意:行的顺序会有所不同

关于r - 使用 plyr 在两列上加入两个海量数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254750/

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