Vai al contenuto principale

Lettura e importazione di file Excel in R con readxl

In questo articolo, scopri come importare file Excel in R con la libreria readxl.
Aggiornato 29 set 2026  · 5 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Sebbene molte organizzazioni archivino i dati in database e in soluzioni come AWS, Azure e GCP, i fogli di calcolo Microsoft Excel continuano a essere ampiamente usati per archiviare dataset più piccoli.

Le funzionalità per la data science di Excel sono più limitate rispetto a quelle di R, quindi è utile poter importare i dati dai fogli di calcolo in R.

In questo tutorial vedremo come leggere fogli di lavoro di Excel (nonché righe e colonne specifiche) in R usando il pacchetto readxl.

Per seguire, ti serve una conoscenza di base operativa di R. 

Per una guida più generale all'importazione di diversi tipi di file in R, leggi How to Import Data Into R: A Tutorial.

Il file Excel

Il dataset che leggeremo in R è piccolo, con solo due fogli, per mostrare come specificare quale foglio leggere. Lo trovi qui.

Il primo foglio è un dataset di marketing bancario con 45.211 righe e 17 colonne. Lo screenshot qui sotto proviene dal file excel “sample.xlsx” e dal foglio “bank-full”.

Screenshot 2023-03-08 at 9.05.49 PM.png

Il secondo foglio è il dataset Iris con 150 righe e 6 colonne e contiene informazioni sui tipi di fiore Iris, come la lunghezza e la larghezza di sepali e petali.  Lo screenshot qui sotto proviene dallo stesso file excel, “sample.xlsx”, e dal foglio “iris”. 

Screenshot 2023-03-08 at 9.08.53 PM.png

Panoramica dei pacchetti

Questo tutorial usa il pacchetto readxl. Il pacchetto openxlsx è una valida alternativa che include anche la possibilità di scrivere file XLSX, ma ha un'integrazione meno stretta con i pacchetti del tidyverse come dplyr e tidyr.

Per leggere file Excel con il pacchetto readxl, dobbiamo prima installarlo e poi importarlo usando la funzione “library”.

install.packages("readxl")

Vedrai il seguente output nella console, a indicare che l'installazione è andata a buon fine.

trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.2/readxl_1.4.2.tgz'
Content type 'application/x-gzip' length 1545782 bytes (1.5 MB)
==================================================
downloaded 1.5 MB


The downloaded binary packages are in
/var/folders/mq/46mc_8tj06n0wh2xjkk08r140000gn/T//RtmpHIGYqM/downloaded_packages

Per usare i metodi di “readxl”, esegui il comando qui sotto nella console di R.

library(readxl)

Nota che openxlsx è un'altra buona alternativa per scrivere file XLSX.

Lettura del primo foglio di lavoro

Leggiamo tutti i dati del primo foglio, “bank-full”, con read_xlsx() usando solo l'argomento path.

bank_df <- read_xlsx(path = "sample.xlsx")

Il risultato è una tibble.

Screenshot 2023-03-09 at 7.40.15 AM.png

Puoi anche usare read_excel() nello stesso modo di read_xlsx(), e tutti gli argomenti che vedrai nelle prossime sezioni funzionano in modo simile con questa funzione. read_excel() proverà a indovinare se hai un foglio di calcolo XLSX o il tipo più vecchio XLS.

bank_df <- read_excel(path = "sample.xlsx")

Screenshot 2023-03-09 at 7.40.15 AM (1).png

Lettura di altri fogli

Ora leggiamo tutti i dati del secondo foglio, cioè “iris”, con la funzione read_xlsx() e l'argomento sheet.

iris <- read_xlsx("sample.xlsx", sheet = "iris")

Screenshot 2023-03-09 at 7.12.08 AM.png

Puoi anche specificare il numero del foglio nell'argomento sheet invece del nome del foglio.

iris2 <- read_xlsx("sample.xlsx", sheet = 1)

Screenshot 2023-03-09 at 7.12.21 AM.png

Lettura di righe specifiche

Leggiamo righe specifiche da un foglio impostando gli argomenti skip e n_max. Per saltare le prime righe, puoi usare l'argomento skip con un valore pari al numero di righe da saltare.

bank_df_s2 <- read_excel("sample.xlsx", sheet = "bank-full", skip = 2)

Nota che il codice sopra salta anche le intestazioni. Imparerai come specificare esplicitamente le intestazioni nella funzione read_xlsx() nelle sezioni successive.

Screenshot 2023-03-09 at 7.17.01 AM.png

Allo stesso modo, per leggere le prime n righe, specifica l'argomento n_max nella funzione read_xlsx(). Il codice qui sotto legge le prime 1000 righe del foglio “bank-full”.

bank_df_n1k <- read_excel("sample.xlsx", sheet = "bank-full", n_max = 1000)

Screenshot 2023-03-09 at 7.18.41 AM.png

Puoi anche combinare entrambi gli argomenti per saltare alcune righe e leggere un numero specifico di righe dal dataset rimanente.

Lettura di celle specifiche

Gli argomenti “skip” e “n_max” ti consentono di leggere un sottoinsieme di righe dei dati; puoi leggere celle specifiche da un foglio impostando l'argomento range.

Ci sono due notazioni per specificare il sottoinsieme del dataset:

  • Notazione A1 (E4:G8) - A rappresenta la colonna e 1 rappresenta il numero di riga.
  • Notazione R1C1 (R4C5:R8C7) - Numero di riga e di colonna sono definiti esplicitamente

L'idea è specificare le coordinate del rettangolo che vuoi ritagliare dal dataset.

Notazione 1:

bank_df_range1 <- read_excel("sample.xlsx", sheet = "bank-full", range = "A3:E10")

Notazione 2:

bank_df_range2 <- read_excel("sample.xlsx", sheet = "bank-full", 

                 range = "R3C1:R10C5")

Range consente anche di includere il nome del foglio nell'argomento (esempio: wbook!E4:G8).

bank_df_range3 <- read_excel("sample.xlsx", range = "bank-full!R3C1:R10C5")

Lettura di dati senza riga di intestazione

Leggiamo dati che non hanno una riga di intestazione impostando l'argomento col_names su un vettore di caratteri. 

PS: Stiamo usando prima l'argomento skip per rimuovere la riga di intestazione.

columns <- c("ID", "Sepal Length", "Sepal Width", "Petal Length", "Petal Width", "Species Name")

iris3 <- read_excel("sample.xlsx", sheet = 2, skip = 1, col_names = columns)

Screenshot 2023-03-09 at 7.19.30 AM.png

Correzione dei nomi delle intestazioni

Nell'ultima sezione, le intestazioni che abbiamo specificato erano separate da spazi. Puoi trasformare i nomi delle intestazioni in variabili sintattiche R con l'argomento .name_repair = "universal".

iris4 <- read_excel("sample.xlsx", sheet = 2, skip = 1,
                  col_names = columns, .name_repair = "universal")

Screenshot 2023-03-09 at 7.19.56 AM.png

Specificare i tipi di colonna

Per impostazione predefinita, quando leggi un file excel, R cerca di indovinare il tipo di dato di ogni variabile.  Osserviamo i tipi di colonna del dataset iris letto con gli argomenti predefiniti.

sapply(iris, class)
  Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Per sovrascrivere i tipi di colonna dedotti, puoi usare l'argomento col_types.

iris5 <- read_excel("sample.xlsx", sheet = 2,
      col_types = c("numeric", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris5, class)
    Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.14 AM.png

Puoi anche lasciare che R indovini i tipi di colonna di alcune variabili specificando il valore “guess” in col_types per una determinata colonna.

iris6 <- read_excel("sample.xlsx", sheet = 2,
        col_types = c("guess", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris6, class)
Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.27 AM.png

Saltare colonne

Si sente spesso dire che più dati ci sono, meglio è. Ma in molti casi d'uso scopri che alcune variabili/colonne non contengono alcun segnale, per uno qualsiasi dei motivi seguenti. 

  • alta cardinalità: quasi ogni valore è diverso
  • cardinalità zero: ogni valore è uguale
  • non correlate al caso d'uso aziendale
  • troppi valori mancanti
  • troppi valori spuri

Puoi evitare di leggere alcune colonne impostando col_types su "skip" come mostrato di seguito.

iris7 <- read_excel("sample.xlsx", sheet = 2,
            col_types = c("numeric", "skip", "skip", "numeric", "numeric", "text"))

sapply(iris7, class)

Screenshot 2023-03-09 at 7.20.36 AM.pngFai un passo in più

In un mondo in cui i dati vengono generati a un ritmo enorme e in forme diverse, il tuo linguaggio di programmazione deve supportarne la lettura. R è uno di quei linguaggi potenti che supportano questo obiettivo. Iscriviti al corso “Introduction to Importing Data in R” per imparare come R offre pacchetti per importare dataset di vario tipo. Questo corso offre tutorial e quiz per rafforzare la tua comprensione dell'importazione dei dati in R.

Domande frequenti

R può importare sia dati CSV che Excel per i progetti?

Sì, R può importare sia dati CSV che Excel per i progetti, e R offre pacchetti e funzioni robuste per gestire entrambi i formati. Leggi la nostra guida su CSV vs. Excel per un confronto dettagliato e consigli su come fare la scelta giusta per i tuoi progetti dati.

Argomenti
R
Data Science
Fogli di calcolo

Scopri di più su R e i fogli di calcolo

Corso

Google Sheets intermedio

4 ore
57.9K
Allarga il tuo vocabolario di Google Sheets approfondendo i tipi di dati, come quelli numerici, logici e mancanti.
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