Como mesclar vários quadros de dados em r (com exemplos)


Você pode usar um dos dois métodos para mesclar vários quadros de dados em R:

Método 1: Use 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)

Método 2: use o 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 ')

Os exemplos a seguir mostram como usar cada método na prática.

Método 1: mesclar vários quadros de dados usando Base R

Suponha que temos os seguintes quadros de dados em 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))

Podemos usar a seguinte sintaxe para mesclar todos os quadros de dados usando funções 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

Observe que cada um dos valores de “id” de cada bloco de dados original é incluído no bloco de dados final.

Método 2: mesclar vários quadros de dados usando o Tidyverse

Suponha que temos os seguintes quadros de dados em 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))

Podemos usar a seguinte sintaxe para mesclar todos os quadros de dados usando funções do Tidyverse – uma coleção de pacotes projetados para ciência de dados em 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

Observe que o quadro de dados final corresponde ao quadro de dados que produzimos usando o primeiro método.

Nota : A abordagem Tidyverse será visivelmente mais rápida se você estiver trabalhando com quadros de dados extremamente grandes.

Recursos adicionais

Os tutoriais a seguir explicam como executar outras funções comuns em R:

Como mesclar quadros de dados com base em múltiplas colunas em R
Como empilhar colunas de quadro de dados em R
Como usar anti_join em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *