Come utilizzare rbindlist in r per creare una tabella dati da più file
La funzione rbindlist() in R può essere utilizzata per creare una data.table da un elenco di molti oggetti data.table o data.frame.
Questa funzione utilizza la seguente sintassi di base:
rbindlist(l, use. names ="check", fill= FALSE , idcol= NULL )
Oro:
- l : elenco contenente oggetti data.table, data.frame o elenco.
- use.names : TRUE si lega in base ai nomi delle colonne. FALSE si lega per posizione.
- fill : TRUE riempie i valori mancanti con NA.
- idcol : crea una colonna che indica da quale elemento dell’elenco provengono queste righe.
L’esempio seguente mostra come utilizzare questa funzione nella pratica.
Esempio: utilizzare rbindlist per creare una tabella dati
Supponiamo di avere il seguente elenco di oggetti data.table e data.frame in 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
Possiamo utilizzare la seguente funzione rbindlist() per associare l’elenco di oggetti data.table e data.frame in un singolo 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
Il risultato è un oggetto data.table con nove righe costituite da righe dell’elenco di oggetti forniti.
Possiamo anche usare la funzione class() per verificare che il risultato sia effettivamente un oggetto data.table:
#view class of resulting object
class(big_data)
[1] "data.table" "data.frame"
Vediamo che il risultato è effettivamente un oggetto data.table.
Il vantaggio di utilizzare rbindlist
L’alternativa all’utilizzo di rbindlist sarebbe utilizzare do.call con la funzione rbind in 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
Questo codice produce lo stesso risultato ma risulta che rbindlist è significativamente più veloce, specialmente per oggetti data.table o data.frame estremamente grandi.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni in R:
Come convertire una tabella in un frame di dati in R
Come aggiungere righe a un frame di dati in R
Come dividere un frame di dati in R