00
:
00
:
00
:
00
•Corso SEO AI - Usa SEOEMAIL al checkout per il 30% di sconto

Importare ed Esportare Dati in R

Una delle operazioni piu frequenti nell’analisi dei dati e il caricamento di dataset da file esterni e il salvataggio dei risultati. R offre numerose funzioni native e pacchetti specializzati per gestire diversi formati di file.

Working Directory: getwd() e setwd()

Prima di importare o esportare dati, e fondamentale conoscere la directory di lavoro corrente. R cerca i file in questa cartella quando non si specifica un percorso completo.

# Visualizzare la directory di lavoro corrente
getwd()
# [1] "C:/Users/utente/Documents"

# Impostare una nuova directory di lavoro
setwd("C:/Users/utente/progetti/analisi-dati")

# Verificare il cambiamento
getwd()
# [1] "C:/Users/utente/progetti/analisi-dati"

# Elencare i file nella directory corrente
list.files()
# [1] "dati.csv" "report.xlsx" "risultati.txt"

Leggere File CSV con read.csv()

La funzione read.csv() e il modo piu semplice per caricare un file CSV (Comma-Separated Values).

# Leggere un file CSV standard (separatore virgola, decimale punto)
dati <- read.csv("vendite.csv")
head(dati)
#   prodotto quantita prezzo
# 1    Mela      100   1.50
# 2   Pera       80   2.00
# 3  Banana     120   1.20

# Per file con separatore punto e virgola e decimale virgola (formato europeo)
dati_it <- read.csv2("vendite_italia.csv")

# Opzioni comuni
dati <- read.csv("vendite.csv",
                 header = TRUE,        # La prima riga contiene i nomi delle colonne
                 sep = ",",            # Separatore di campo
                 dec = ".",            # Separatore decimale
                 stringsAsFactors = FALSE,  # Non convertire stringhe in fattori
                 na.strings = c("", "NA", "N/A"))  # Valori da interpretare come NA

Leggere File con read.table()

read.table() e la funzione piu generale per leggere file di testo tabulari. read.csv() e read.delim() sono in realta varianti di read.table() con parametri predefiniti diversi.

# Leggere un file con separatore generico
dati <- read.table("dati.txt",
                   header = TRUE,
                   sep = "\t",      # Separatore tabulazione
                   dec = ",",       # Decimale con virgola
                   comment.char = "#",  # Ignora righe che iniziano con #
                   skip = 2)        # Salta le prime 2 righe

str(dati)
# 'data.frame': 50 obs. of  4 variables:
#  $ nome  : chr  "Mario" "Luca" "Anna" ...
#  $ eta   : int  25 30 28 ...
#  $ voto  : num  27.5 30 28.3 ...

Leggere File Delimitati con read.delim()

read.delim() e ottimizzata per file con separatore di tabulazione.

# Leggere un file tab-delimited
dati_tab <- read.delim("dati_tab.txt", header = TRUE)

# Versione per formato europeo (decimale virgola)
dati_tab2 <- read.delim2("dati_tab_eu.txt", header = TRUE)

Selezione Interattiva con file.choose()

La funzione file.choose() apre una finestra di dialogo che permette di selezionare un file in modo interattivo.

# Selezionare un file tramite finestra di dialogo
dati <- read.csv(file.choose())

# Utile per script interattivi
percorso <- file.choose()
cat("File selezionato:", percorso, "\n")
dati <- read.csv(percorso)

Esportare con write.csv()

write.csv() salva un data frame in formato CSV.

# Creare un data frame di esempio
risultati <- data.frame(
  studente = c("Anna", "Marco", "Luca", "Sara"),
  voto = c(28, 30, 25, 27),
  lode = c(FALSE, TRUE, FALSE, FALSE)
)

# Salvare in CSV
write.csv(risultati, "risultati_esame.csv", row.names = FALSE)

# Formato europeo (punto e virgola, decimale virgola)
write.csv2(risultati, "risultati_esame_eu.csv", row.names = FALSE)

Esportare con write.table()

write.table() offre maggiore controllo sul formato di output.

# Salvare con separatore personalizzato
write.table(risultati,
            file = "risultati.txt",
            sep = "\t",           # Separatore tabulazione
            row.names = FALSE,    # Non includere i numeri di riga
            quote = FALSE,        # Non mettere le virgolette
            fileEncoding = "UTF-8")

# Aggiungere dati a un file esistente
write.table(nuovi_dati,
            file = "risultati.txt",
            append = TRUE,        # Aggiunge in fondo al file
            col.names = FALSE,    # Non ripetere le intestazioni
            sep = "\t",
            row.names = FALSE)

Leggere File Excel con readxl

Il pacchetto readxl permette di leggere file Excel (.xls e .xlsx) senza dipendenze esterne.

# Installare il pacchetto (una sola volta)
install.packages("readxl")
library(readxl)

# Leggere un file Excel
dati_excel <- read_excel("report.xlsx")

# Specificare il foglio da leggere
dati_foglio2 <- read_excel("report.xlsx", sheet = "Vendite")

# Leggere per indice del foglio
dati_foglio3 <- read_excel("report.xlsx", sheet = 3)

# Opzioni avanzate
dati_excel <- read_excel("report.xlsx",
                         sheet = "Dati",
                         range = "A1:D100",    # Intervallo specifico
                         col_names = TRUE,     # Prima riga come intestazione
                         skip = 2,             # Salta le prime 2 righe
                         na = c("", "N/A"))    # Valori NA

# Elencare i fogli disponibili
excel_sheets("report.xlsx")
# [1] "Vendite" "Clienti" "Riepilogo"

Leggere File con readr (Tidyverse)

Il pacchetto readr, parte del tidyverse, offre funzioni piu veloci e con impostazioni predefinite piu moderne rispetto alle funzioni base.

# Installare readr (o tutto il tidyverse)
install.packages("readr")
library(readr)

# Leggere un CSV con readr
dati <- read_csv("vendite.csv")
# Rows: 1000 Columns: 5
# -- Column specification --------
# prodotto  <chr>
# quantita  <dbl>
# prezzo    <dbl>

# Specificare i tipi di colonna
dati <- read_csv("vendite.csv",
                 col_types = cols(
                   prodotto = col_character(),
                   quantita = col_integer(),
                   prezzo = col_double()
                 ))

# Leggere file con delimitatore generico
dati_tab <- read_tsv("dati.tsv")         # Tab-separated
dati_custom <- read_delim("dati.txt",     # Delimitatore personalizzato
                          delim = "|")

# Leggere file con formato europeo
dati_eu <- read_csv2("dati_europei.csv")  # Separatore ; e decimale ,

I vantaggi di readr rispetto alle funzioni base includono:

  • Velocita: significativamente piu veloce su file di grandi dimensioni
  • Tipi di dato: non converte le stringhe in fattori automaticamente
  • Barra di progresso: mostra l’avanzamento su file grandi
  • Messaggi informativi: comunica il tipo di ogni colonna importata

Salvare e Caricare Oggetti R

Oltre ai file di testo, R permette di salvare e caricare oggetti nel formato nativo .RData o .rds.

# Salvare un singolo oggetto
saveRDS(risultati, "risultati.rds")

# Caricare un singolo oggetto
risultati_caricati <- readRDS("risultati.rds")

# Salvare piu oggetti nell'ambiente
save(dati, risultati, file = "workspace.RData")

# Caricare tutti gli oggetti salvati
load("workspace.RData")

Conclusione

R offre un ecosistema ricco e flessibile per l’importazione e l’esportazione dei dati. Le funzioni base come read.csv() e write.csv() sono sufficienti per la maggior parte delle esigenze, mentre pacchetti come readxl e readr aggiungono supporto per formati specifici e prestazioni migliori. La scelta dello strumento giusto dipende dal formato del file, dalle dimensioni del dataset e dal flusso di lavoro adottato.