Come unire più frame di dati in r (con esempi)


È possibile utilizzare uno dei due metodi per unire più frame di dati in R:

Metodo 1: utilizzare 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)

Metodo 2: Usa 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 ')

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Metodo 1: unire più frame di dati utilizzando Base R

Supponiamo di avere i seguenti frame di dati in R:

 #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))

Possiamo utilizzare la seguente sintassi per unire tutti i frame di dati utilizzando le funzioni di base R:

 #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

Tieni presente che ciascuno dei valori “id” di ciascun blocco dati originale è incluso nel blocco dati finale.

Metodo 2: Unisci più frame di dati utilizzando Tidyverse

Supponiamo di avere i seguenti frame di dati in R:

 #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))

Possiamo utilizzare la seguente sintassi per unire tutti i frame di dati utilizzando le funzioni di Tidyverse , una raccolta di pacchetti progettati per la scienza dei dati 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

Nota che il frame di dati finale corrisponde al frame di dati che abbiamo prodotto utilizzando il primo metodo.

Nota : l’approccio Tidyverse sarà notevolmente più veloce se lavori con frame di dati estremamente grandi.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre funzioni comuni in R:

Come unire frame di dati basati su più colonne in R
Come impilare le colonne del frame di dati in R
Come utilizzare anti_join in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *