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