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

Aggiungi un commento

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