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.