[英]Using plyr to join two massive dataframes on two columns
我有一個非常大的數據框,需要連接到兩列上的另一個數據框。 我一直在使用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)
因此,例如,如果我有以下兩個數據框:
> 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:要加入的變量的字符向量。 如果為'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)
注意:行的順序將有所不同
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.