簡體   English   中英

full_join()r中段/批次中的兩個數據幀

[英]full_join() two data frames in segments/batches in r

我有兩個要合並的數據框。

df1具有維度20015行和7個變量。 df2尺寸為8534664行和29個變量。

當我執行full_join(df1, df2, by = "KEY") ,出現Error: cannot allocate vector of size 891.2 Mb因此我設置了memory.limit(1000000) ,但仍然收到相同的錯誤。 我在Windows任務管理器中查看我的CPU使用率圖時運行了full_join() ,它呈指數增長。 我在整個代碼中也使用了gc()

我的問題是,有沒有可以加入前1,000,000行的函數。 休息一下,然后加入下1,000,000行, 1,000,000類推,直到所有行都已加入。

是否有一個函數可以批量運行full_join()

這只是報告使用full_join運行並從64位Windows系統( data.table Ghz,RAM 120GB)中的full_join merge花費的時間。 希望它至少可以為您的案例提供參考。

library(data.table)
df1 <- data.table(KEY=sample(1:800,20015,replace = TRUE), 
                  matrix(rnorm(20015*7),20015,7))#1.1MB
df2 <- data.table(KEY=sample(1:800,8534664,replace = TRUE), 
                  matrix(rnorm(8534664*29),8534664,29))#1.9GB
library(dplyr)
tick <- Sys.time()
df_join <- full_join(df1, df2, by = "KEY") #~58.1 GB in memory
tock <- Sys.time()- tick #~1.85min
#With data.table merge.
tick <- Sys.time()
df_join<- merge(df1, df2, by = "KEY", allow.cartesian = TRUE)#~58.1 GB in memory
tock <- Sys.time() - tick #~5.75 mins

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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