簡體   English   中英

使用plyr在兩列上連接兩個海量數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM