R: la funzione rbind() e l’unione di dati

Se lavori con record di dati che hanno lo stesso numero di colonne e desideri disporli semplicemente uno sotto l’altro, ti consigliamo di utilizzare rbind() in R.

A cosa serve rbind() in R?

La funzione rbind() in R è una funzione utile per unire i dati riga per riga. Una delle sue applicazioni principali consiste nell’aggiunta di nuove informazioni a un data frame già esistente. Questa possibilità risulta utile se i dati di cui disponi vengono aggiornati regolarmente e desideri integrarli in un record di dati già disponibile. La funzione rbind() unisce quindi i risultati a mano a mano, elaborando i dati in cicli o processi iterativi.

Inoltre, rbind() in R è utilizzata spesso per combinare data frame che hanno la stessa struttura, ad esempio per eseguire analisi più approfondite oppure per unire diverse parti di uno stesso record di dati e creare un unico record di dati. Ricorda che rbind() funziona bene con record di dati piuttosto piccoli. Per i record di dati più grandi ti consigliamo invece di utilizzare pacchetti come dplyr poiché ti permettono di migliorare le prestazioni.

La sintassi di rbind() in R

È possibile indicare un numero a piacere di data frame come parametri di rbind() per combinarli fra loro. È importante che tutti i frame di dati assegnati abbiano lo stesso numero di colonne e gli stessi nomi per le colonne.

rbind(data.frame1, data.frame2, ...)
R

Gli argomenti data.frame1, data.frame2, ecc. rappresentano i frame di dati o gli elenchi di data frame che devono essere uniti riga per riga.

Esempi di applicazione per rbind() in R

Per spiegare meglio il funzionamento di rbind() in R con un esempio concreto, partiamo dalla creazione di un data frame composto da due colonne:

#creating data frame 1
names<-c("Deborah","Tom","Matt","Laura","Rebecca")
status<-c("nurse","doctor","nurse","doctor","nurse")
df1<-data.frame(names, status)
df1
R

L’output si presenta così:

names status
1  Deborah     nurse
2  Tom   doctor
3  Matt      nurse
4  Laura   doctor
5  Rebecca     nurse
R

Successivamente definiamo un ulteriore frame di dati con lo stesso numero di colonne:

#creating data frame 2
names<-c("Eva","John")
status<-c("doctor","nurse")
df2<-data.frame(names, status)
df2
R

L’output è il seguente:

names    status
 1  Eva     doctor
2   John      nurse
R

A questo punto è possibile combinare i due data frame l’uno con l’altro:

#binding rows of df1 and df2
rbind(df1,df2)
R

Il risultato è:

names     status
1  Deborah      nurse
2  Tom    doctor
3  Matt      nurse
4  Laura    doctor
5  Rebecca     nurse
6  Eva    doctor
7  John    nurse
R

I data frame di lunghezza diversa non possono essere uniti utilizzando rbind() in R

Nelle parti seguenti ti mostriamo cosa succede quando si combinano data frame che hanno un numero di colonne differente.

Per prima cosa, creiamo nuovamente un frame di dati composto da due colonne:

#creating data frame 1
names<-c("Deborah","Tom","Matt","Laura","Rebecca")
status<-c("nurse","doctor","nurse","doctor","nurse")
df1<-data.frame(names, status)
df1
R

Output:

names     status
1  Deborah      nurse
2  Tom    doctor
3  Matt      nurse
4  Laura    doctor
5  Rebecca      nurse
R

Quindi definiamo un data frame con una terza colonna aggiuntiva:

#creating data frame 2
names<-c("Eva","John")
status<-c("doctor","nurse")
age<-c("52","38")
df2<-data.frame(names, status, age)
df2
R

L’output ottenuto:

names    status    age
1  Eva    doctor        52
2  John      nurse      38
R

Applichiamo la funzione rbind() in R e otteniamo quindi il seguente messaggio di errore:

rbind(df1,df2)
Error in rbind(deparse.level, ...) :
    numbers of columns of arguments do not match
R

L’errore ci dice che non possiamo utilizzare rbind() per unire i due data frame, in quanto il loro numero di colonne non è uguale. Per farlo possiamo però utilizzare la funzione bind_rows() del pacchetto dplr.

Per combinare frame di dati di lunghezza diversa puoi utilizzare la funzione bind_rows()

Il problema dell’esempio precedente si risolve facilmente con bind_rows().

#install dplyr
install.packages('dplyr')
#import libraries
library(dplyr)
#bind rows
bind_rows(df1,df2)
R

A questo punto otteniamo questo risultato:

names    status            age
1  Deborah      nurse      <NA>
2  Tom     doctor         <NA>
3  Matt       nurse         <NA>
4  Laura    doctor        <NA>
5  Rebecca       nurse   <NA>
6  Eva     doctor            52
7  John       nurse         38
R

Con bind_rows() possiamo unire correttamente i data frame, mentre i campi vuoti sono indicati con <NA>. La funzione è quindi una valida alternativa a rbind() in R per i casi in cui il numero di colonne dei frame di dati non è identico.

Consiglio

Se vuoi saperne di più sulle funzioni per la visualizzazione e l’elaborazione di record di dati in R, ti consigliamo di seguire i tutorial su plot in R e paste in R nella nostra guida.

Il tuo web hosting come mai prima d'ora
  • Certificato SSL e protezione DDoS
  • Velocità, flessibilità e scalabilità
  • Dominio e consulente personale
  • 1 anno gratis del gestionale di fatturazione elettronica FlexTax
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top