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, ...)
RGli 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
RL’output si presenta così:
names status
1 Deborah nurse
2 Tom doctor
3 Matt nurse
4 Laura doctor
5 Rebecca nurse
RSuccessivamente 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
RL’output è il seguente:
names status
1 Eva doctor
2 John nurse
RA questo punto è possibile combinare i due data frame l’uno con l’altro:
#binding rows of df1 and df2
rbind(df1,df2)
RIl risultato è:
names status
1 Deborah nurse
2 Tom doctor
3 Matt nurse
4 Laura doctor
5 Rebecca nurse
6 Eva doctor
7 John nurse
RI 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
ROutput:
names status
1 Deborah nurse
2 Tom doctor
3 Matt nurse
4 Laura doctor
5 Rebecca nurse
RQuindi 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
RL’output ottenuto:
names status age
1 Eva doctor 52
2 John nurse 38
RApplichiamo 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
RL’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)
RA 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
RCon 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.
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.
- Certificato SSL e protezione DDoS
- Velocità, flessibilità e scalabilità
- Dominio e consulente personale
- 1 anno gratis del gestionale di fatturazione elettronica FlexTax