Como usar o rbindlist em r para criar uma tabela de dados a partir de vários


A função rbindlist() em R pode ser usada para criar um data.table a partir de uma lista de muitos objetos data.table ou data.frame.

Esta função usa a seguinte sintaxe básica:

 rbindlist(l, use. names ="check", fill= FALSE , idcol= NULL )

Ouro:

  • l : Lista contendo objetos data.table, data.frame ou list.
  • use.names : TRUE vincula por nomes de colunas. FALSE liga por posição.
  • fill : TRUE preenche valores ausentes com NA.
  • idcol : Cria uma coluna indicando de qual item da lista vêm essas linhas.

O exemplo a seguir mostra como usar esta função na prática.

Exemplo: Use rbindlist para criar uma tabela de dados

Suponha que temos a seguinte lista de objetos data.table e data.frame em R:

 library (data.table)

#create data frames and data tables
data1 <- data. table (team=c('A', 'B', 'C'),
                    dots=c(22, 27, 38))

data2 <- data. table (team=c('D', 'E', 'F'),
                    dots=c(22, 14, 20))

data3 <- data. frame (team=c('G', 'H', 'I'),
                    dots=c(11, 15, 18))

#view data frames and data tables
print (data1)
print (data2)
print (data3)

   team points
1: At 22
2:B27
3: C 38
   team points
1:D22
2:E14
3:F20
  team points
1 G 11
2:15 a.m.
3 I 18

Podemos usar a seguinte função rbindlist() para vincular a lista de objetos data.table e data.frame em um único data.table:

 #define list of objects to bind together
data_list <- list(data1, data2, data3)

#bind together list of objects
big_data <- rbindlist(data_list)

#view result
big_data

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

O resultado é um objeto data.table com nove linhas que consistem em linhas da lista de objetos que fornecemos.

Também podemos usar a função class() para verificar se o resultado é de fato um objeto data.table:

 #view class of resulting object
class(big_data)

[1] "data.table" "data.frame"

Vemos que o resultado é de fato um objeto data.table.

A vantagem de usar o rbindlist

A alternativa ao uso do rbindlist seria usar do.call com a função rbind na base R:

 #use rbind to bind together list of objects
do. call (" rbind ", data_list)

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

Este código produz o mesmo resultado, mas acontece que rbindlist é significativamente mais rápido, especialmente para objetos data.table ou data.frame extremamente grandes.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em R:

Como converter uma tabela em um quadro de dados em R
Como adicionar linhas a um quadro de dados em R
Como dividir um quadro de dados em R

Add a Comment

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