我有一个非常大的数据帧,我需要连接到两列上的另一个数据帧.我一直在使用merge来完成ir,但是R会耗尽内存,表格越大.是否有使用dplyr或plyr的类似解决方案?我听说他们需要的内存要少得多.我知道如何在plyr中使用join函数,我正在努力的是通过两列连接.我一直在使用的合并synatx如下:
Correlation_Table <- merge(Correlation_Table, inter, by.x = c(1,2), by.y = c(1,2), all.x = TRUE, all.y = TRUE)
Run Code Online (Sandbox Code Playgroud)
例如,如果我有以下两个数据帧:
> 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
Run Code Online (Sandbox Code Playgroud)
其中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'))
Run Code Online (Sandbox Code Playgroud)
根据 ?full_join
by:要加入的变量的字符向量.如果为'NULL',则默认的'join'将使用两个表中具有通用名称的所有变量进行自然连接.一条消息列出了变量,以便您可以检查它们是否正确.要通过x和y上的不同变量连接,请使用命名向量.例如,'by = c("a"="b")'将'x.a'与'y.b'匹配.
并将结果与
res2 <- merge(df1, df2, by.x = c(1,2), by.y = c(1,2),
all.x = TRUE, all.y = TRUE)
Run Code Online (Sandbox Code Playgroud)
注意:行的顺序将不同
| 归档时间: |
|
| 查看次数: |
6431 次 |
| 最近记录: |