Vai al contenuto principale

Unire i dataset in R

In questo tutorial imparerai a unire più dataset in R.
Aggiornato 29 set 2026  · 8 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Nella pratica, i dati sono ospitati su server diversi e in molti file differenti. Quando i dati di cui hai bisogno provengono da più fonti, è fondamentale sapere come aggregarli in modo da perdere il meno possibile e creare abbinamenti che abbiano davvero senso rispetto alla struttura dei tuoi dati.

Questo tutorial ti guiderà attraverso:

  • Unire i dataset orizzontalmente e verticalmente
  • Cosa sono le chiavi primarie e come danno struttura ai tuoi dati
  • Diversi tipi di join (ad es., left-join, inner-join, full-join) e come scegliere tra loro
  • Un problema comune a cui prestare attenzione e come risolverlo

Concatenare i dataset

A livello generale, ci sono due modi per unire i dataset: puoi aggiungere informazioni aggiungendo più righe oppure aggiungendo più colonne al tuo dataset. In generale, quando hai dataset che hanno lo stesso insieme di colonne o lo stesso insieme di osservazioni, puoi concatenarli rispettivamente in verticale o in orizzontale. Impariamo con alcuni esempi.

Aggiungere i dataset verticalmente

Quando hai più dataset con lo stesso insieme di colonne, puoi concatenare un dataset a un altro in verticale. Cioè, mantenendo le colonne del tuo dataset, puoi aggiungere più righe. Avere tali informazioni in un unico file ti renderà più semplice aggregare e avere una visione d’insieme, senza il fastidio di passare continuamente da un file all’altro e perderne il filo.

Dataset 1

Make Num models
Honda 63
BMW 10

Dataset 2

Make Num models
Ford 26
Tesla 4

È importante notare che, se hai la stessa osservazione presente in più dataset e li concateni verticalmente usando rbind(), finirai con osservazioni duplicate nella tua tabella. E anche se i due dataset devono avere lo stesso insieme di variabili (ovvero colonne), non è necessario che siano nello stesso ordine. Verificalo tu stesso nella console qui sotto!

Nell’area di lavoro ci sono due dataset chiamati dataset1 e dataset2 che hai visto sopra. Prova a riordinare le colonne di dataset1. Chiama rbind() su dataset1 e dataset2 così come su reordered_dataset1 e dataset2.

dataset1 <- data.frame(make = c("Honda", "BMW"), num_models = c(63, 10)) dataset2 <- data.frame(make = c("Ford", "Tesla"), num_models = c(26, 4)) # Add datasets vertically rbind(dataset1, dataset2) # Reorder columns reordered_dataset1 <- dataset1[, c(2, 1)] # See that rbind() is robust to column ordering rbind(reordered_dataset1, dataset2)

Dopo rbind(), i risultati dovrebbero contenere le informazioni su tutte e quattro le case automobilistiche in un’unica tabella come questa:

Dataset concatenato verticalmente

Make Num models
Honda 63
BMW 10
Ford 26
Tesla 4

Inizia a imparare R gratis

Introduzione a R

BasicSkill Level
4 ore
3.1M learners
Impara le basi dell'analisi dei dati in R, compresi vettori, liste e data frame, e fai pratica con R con set di dati reali.
See DetailsRight Arrow
Start Course

Aggiungere i dataset orizzontalmente

Quando hai dataset che rappresentano lo stesso insieme di osservazioni, puoi concatenarli orizzontalmente. Questa volta, mantenendo le righe del tuo dataset, puoi aggiungere più colonne. In questi casi, dovresti verificare che l’ordine delle osservazioni sia lo stesso. Se i tuoi dataset hanno un numero diverso di righe, oppure hanno lo stesso numero di righe ma in un ordine incoerente, potresti abbinare un insieme di colonne all’altro in modo privo di senso.

Estendiamo l’esempio precedente. Supponi di avere due file di dati: uno contiene la casa automobilistica e il numero di modelli unici offerti, e un altro contiene la casa automobilistica e le vendite totali:

Numero di modelli unici offerti

Make Num models
Honda 63
BMW 10
Ford 26
Tesla 4

Vendite totali

Make Sales
Ford 119157
BMW 25908
Honda 188328
Tesla 29975

È importante notare che, se hai la stessa osservazione presente in più dataset e li concateni orizzontalmente usando cbind(), finirai con colonne ridondanti nella tabella. E, sebbene i due dataset contengano informazioni correlate, l’ordinamento delle righe conta!

Nella console qui sotto, chiama cbind() su models e sales e stampa il risultato:

models <- data.frame(make = c("Honda", "BMW", "Ford", "Tesla"), num_models = c(63, 10, 26, 4)) sales <- data.frame(make = c("Ford", "BMW", "Honda", "Tesla"), sales = c(119157, 25908, 188328, 29975)) # Add datasets horizontally cbind(models, sales)

Dovresti ottenere qualcosa di simile a questo:

Modelli e vendite

Make Num models Make Sales
Honda 63 Ford 119157
BMW 10 BMW 25908
Ford 26 Honda 188328
Tesla 4 Tesla 29975

Vedi il problema? Questi dati non sono tidy!

Secondo i principi dei dati ordinati spiegati in questo corso introduttivo, ogni osservazione di un dataset dovrebbe essere rappresentata in una riga unica. E se avessi informazioni solo su alcune righe in un dataset e volessi aggiungere informazioni solo per quelle di cui sai di più? In altre parole, cosa succede se vuoi aggiungere più colonne da un dataset a un altro, ma questi dataset non hanno lo stesso numero di osservazioni?

Chiave primaria e chiavi esterne

Il primo passo quando vuoi combinare dei dataset è cercare la chiave primaria del tuo dataset. La chiave primaria è la colonna o l’insieme di colonne che identifica in modo univoco ogni osservazione nel tuo dataset. Nell’esempio con le case automobilistiche, il numero di modelli unici offerti e le vendite totali, la chiave primaria dei tuoi dataset è la colonna make.

Ora possiamo eseguire i join, il modo standard per unire i dataset in un’unica tabella.

Tipi di join

Esistono molti tipi di join. Puoi imparare come arricchire le colonne di un dataset con quelle di un altro con i mutating join, come filtrare un dataset rispetto a un altro con i filtering join e come passare al setaccio i dataset con le operazioni insiemistiche nel corso Joining Data in R with dplyr. Di seguito alcuni dei più comuni.

left_join(x, y): restituisce tutte le righe di x e tutte le colonne di x e y. Le righe di x senza corrispondenza in y avranno valori NA nelle nuove colonne. Se ci sono più corrispondenze tra x e y, vengono restituite tutte le combinazioni delle corrispondenze.

inner_join(x, y): restituisce tutte le righe di x per cui esistono valori corrispondenti in y, e tutte le colonne di x e y. Se ci sono più corrispondenze tra x e y, vengono restituite tutte le combinazioni delle corrispondenze.

full_join(x, y): restituisce tutte le righe e tutte le colonne sia di x che di y. Dove non ci sono valori corrispondenti, la funzione restituisce NA per quello mancante.

I join menzionati sopra sono esempi di mutating join poiché combinano variabili da due dataset.

Chiavi mancanti

Supponi di avere due dataset. Il primo si chiama size e contiene i nomi delle persone e la loro taglia di maglietta:

 > size
name size
1  Tom    M
2  Dan   XL
3 Keil    S

Il secondo dataset si chiama color e contiene i cognomi delle persone, le preferenze del colore della maglietta e memorizza alcune informazioni nell’attributo row.names:

 > color
     surname color
Tom     Jeon  <NA>
Dan    Smith  Dark
Bob McLadden Light

Noti cosa potrebbe andare storto? I join tra due tabelle possono complicarsi quando ci sono chiavi mancanti o duplicate. In questo esempio, i data frame di R memorizzano informazioni importanti nell’attributo row.names. In questo caso, non potrai accedere alla chiave con una funzione di join, perché le funzioni di join possono accedere solo alle colonne del data frame.

Il trucco per risolvere facilmente questo problema è usare la funzione rownames_to_column() del pacchetto tibble. Restituisce una copia del tuo dataset con i nomi di riga aggiunti ai dati come colonna. Il primo argomento di rownames_to_column() è il tuo oggetto data frame e il secondo è una stringa che specifica il nome della colonna che vuoi aggiungere.

Prova a esplorare nella console qui sotto. I dataset size e color sono già caricati nel tuo workspace.

color <- data.frame(surname = c("Jeon", "Smith", "McLadden"), color = c(NA, "Dark", "Light")) row.names(color) <- c("Tom", "Dan", "Bob") size <- data.frame(name = c("Tom", "Dan", "Keil"), size = c("M", "XL", "S")) # Explore here!

Considerazioni finali

Nella realtà, i dati possono essere suddivisi in molti dataset e in molti formati diversi. Poiché R è progettato per lavorare con singole tabelle di dati, manipolare e combinare i dataset in un’unica tabella è una competenza essenziale. Completa il percorso di competenze Importing & Cleaning Data with R e impara a fare il parsing e a combinare dati in qualsiasi formato. Dai un’occhiata al tutorial R Data Import di DataCamp. Buono studio!

Argomenti
R
Data Science
Analisi dei dati

Scopri di più su R

Corso

Introduzione a R

4 ore
3.1M
Impara le basi dell'analisi dei dati in R, compresi vettori, liste e data frame, e fai pratica con R con set di dati reali.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro