# 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.

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

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:

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

L’output si presenta così:

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

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

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

L’output è il seguente:

```R
names    status
 1  Eva     doctor
2   John      nurse
```

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

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

Il risultato è:

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

### 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:

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

Output:

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

Quindi definiamo un data frame con una terza colonna aggiuntiva:

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

L’output ottenuto:

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

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

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

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()`.

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

A questo punto otteniamo questo risultato:

```R
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
```

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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/plot-in-r/) e [paste in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-paste/) nella nostra guida.


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-rbind/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-rbind/) for AI/LLM consumption.