Meerdere dataframes samenvoegen in r (met voorbeelden)
U kunt een van de twee methoden gebruiken om meerdere dataframes in R samen te voegen:
Methode 1: Gebruik Base R
#put all data frames into list
df_list <- list(df1, df2, df3)
#merge all data frames into list
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)
Methode 2: Gebruik Tidyverse
library (tidyverse)
#put all data frames into list
df_list <- list(df1, df2, df3)
#merge all data frames into list
df_list %>% reduce(full_join, by=' variable_name ')
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken.
Methode 1: Meerdere dataframes samenvoegen met Base R
Stel dat we de volgende dataframes in R hebben:
#define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
revenue=c(34, 36, 40, 49, 43))
df2 <- data. frame (id=c(1, 2, 5, 6, 7),
expenses=c(22, 26, 31, 40, 20))
df3 <- data. frame (id=c(1, 2, 4, 5, 7),
profit=c(12, 10, 14, 12, 9))
We kunnen de volgende syntaxis gebruiken om alle dataframes samen te voegen met behulp van R-basisfuncties:
#put all data frames into list
df_list <- list(df1, df2, df3)
#merge all data frames together
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)
id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9
Merk op dat elk van de „id“-waarden van elk origineel datablok is opgenomen in het uiteindelijke datablok.
Methode 2: Voeg meerdere dataframes samen met Tidyverse
Stel dat we de volgende dataframes in R hebben:
#define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
revenue=c(34, 36, 40, 49, 43))
df2 <- data. frame (id=c(1, 2, 5, 6, 7),
expenses=c(22, 26, 31, 40, 20))
df3 <- data. frame (id=c(1, 2, 4, 5, 7),
profit=c(12, 10, 14, 12, 9))
We kunnen de volgende syntaxis gebruiken om alle dataframes samen te voegen met behulp van functies van Tidyverse – een verzameling pakketten ontworpen voor data science in R:
library (tidyverse)
#put all data frames into list
df_list <- list(df1, df2, df3)
#merge all data frames together
df_list %>% reduce(full_join, by=' id ')
id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9
Merk op dat het uiteindelijke dataframe overeenkomt met het dataframe dat we met de eerste methode hebben geproduceerd.
Opmerking : de Tidyverse-aanpak zal merkbaar sneller zijn als u met extreem grote dataframes werkt.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende functies in R kunt uitvoeren:
Gegevensframes samenvoegen op basis van meerdere kolommen in R
Dataframekolommen stapelen in R
Hoe anti_join te gebruiken in R