Indice

Importare i dati in R

In R, l'inserimento diretto dei dati in un Dataframe non è una operazione semplicissima. L'importazione dei dati diventa quindi il modo più efficiente per costruire un dataset, o per utilizzarne uno disponibile in altro formato.

R prevede diverse funzioni di importazione dei dati, anche con finalità diverse (ad es.: importare dati e tabelle dal web), ma la procedura più semplice da seguire è:

Vedi anche:

Preparazione della base dati

Prima di importare i dati in un dataframe, bisogna prepararli, facendo attenzione a:

Con Excel

Esempio 1)

Questa tabella NON va bene

Male Female
ID Salary ID Salary
1 32000 2 23000
3 37000 4 54000

Va trasformata così

ID Salary Gender
1 32000 Male
2 23000 Female
3 37000 Male
4 54000 FeMale

Con Office Calc

Valgono le stesse indicazioni per Excel.

Formati dei files Excel e Calc

Una volta terminati i controlli sui file, i default delle procedure di esportazione dei file Excel e Calc possono essere utilizzati per salvare il dataset ed importarlo in R.

Sarà cioè possibile utilizzare il comando da menu “Salva con nome …” e selezionare il formato di output, senza ulteriori modifiche.

Excel

In Excel è possibile salvare i files in vari formati. Oltre al formato Excel (xlsx), suggeriamo di utilizzare i seguenti:

formato sep. campo sep. testo sep. decimali comando import.
txt (tab delimited) tabulazione nessuno , (virgola) read.delim2
csv ; (punto e virgola) nessuno , (virgola) read.csv2

Attenzione a non confondere il formato CSV con il formato CSV UTF-8.

Calc

Anche in OpenOffice, è possibile salvare i files in vari formati, fra i quali sono da preferire il formato xlsx e quello csv (non esiste un filtro per l'importazione diretta dei formati open office):

formato sep. campo sep. testo sep. decimali comando import.
csv , (virgola) nessuno come mostrato read.csv

Esporta i dati da Calc Esporta i dati da Calc

In questo caso, di default, il separatore dei decimali (e delle migliaia), è quello utilizzato nel foglio di calcolo stesso, quindi quello di sistema (in Italia, dovrebbe essere la virgola).

Importazione: procedure

Definiamo come directory di lavoro quella in cui collochiamo il file esportato, per maggiore comodità.

Con RStudio

RStudio prevede una semplice procedura di importazione dei dati da Excel e da altri formati. Le funzioni usate da RStudio sono sia quelle della distribuzione base, sia quelle del pacchetto readr (tidyverse).

Importazione con RStudio Importazione con RStudio

In questo video viene mostrata ad esempio l'importazione di un file csv da url (YouTube).

Con RCommander

Vedi: Importazione dei dati con RCommander

Funzioni di R

Da Excel

Per importare i file di Excel in formato xls e xlsx, è molto comodo e semplice da usare il pacchetto readxl2):

es_readxl.R
# installare e caricare il pacchetto
install.packages("readxl")
library("readxl")
 
# importare il file
mydata <- read_excel("myfile.xlsx")
 
# oppure
mydata <- read_excel(file.choose())

Gli argomenti della funzione consentono di indicare il foglio di lavoro e il range delle celle da importare.

# argomenti di read_excel
read_excel(path, sheet = NULL, range = NULL, col_names = TRUE,
  col_types = NULL, na = "", trim_ws = TRUE, skip = 0, n_max = Inf,
  guess_max = min(1000, n_max))

Vedi il sito web del pacchetto

da csv

Se il file ha il formato numerico italiano, usiamo la funzione read.csv2:

# argomenti di read.csv2
read.csv2(file, header = TRUE, sep = ";", quote = "\"",
          dec = ",", fill = TRUE, comment.char = "", ...

Di default, quindi, read.csv2 legge i file con “;” come separatore di campo (sep=";") e separatore di decimale “,” (dec = ","). Digiteremo dunque il comando:

es_csv2.R
mydata <- read.csv2("myfile.csv")

Se il file usa un formato numerico non italiano (il punto come separatore di decimali), usiamo la funzione read.csv, che, di default, legge i file con “,” come separatore di campo (sep=",") ma separatore di decimale “.” (dec = "."). In teoria, però, nel nostro file dovremmo avere le virgole come separatori dei decimali.

Digiteremo dunque:

mydata <- read.csv("myfile.csv")

da formato di testo delimitato

I file in formato testo possono avere altri delimitatori di campo (spazio, tabulazione, ecc.). I file Excel esportati in formato txt, ad esempio usano la tabulazione (tab delimited). Se il file ha il formato numerico italiano, usiamo la funzione read.delim2:

# argomenti di read.delim2
read.delim2(file, header = TRUE, sep = "\t", quote = "\"",
            dec = ",", fill = TRUE, comment.char = "", ...)

Di default, la funzione legge i file con le tabulazioni come separatore di campo (sep = "\t") e separatore di decimale “,” (dec = ","). Sarà quindi sufficiente digitare il comando:

es_delim2.R
mydata <- read.delim2("myfile.txt")

Queste funzioni fanno parte ed hanno gli stessi argomenti della funzione generica di importazione dei dati read.table.

Copia e incolla

È possibile importare in R tabelle e dati copiati da un altro programma.

library(readr)
nuovo_oggetto <- read_delim(clipboard())

Entrambe le funzioni read_delim() e clipboard() appartengono al pacchetto *readr*, usato anche da RStudio per l'importazione dei dati.

da Spss

La funzione più semplice da usare è spss.get nel pacchetto Hmisc.

# argomenti di spss.get
spss.get(file, lowernames=FALSE, datevars = NULL,
         use.value.labels = TRUE, to.data.frame = TRUE,
         charfactor=FALSE)
datevars variabili da convertire in date
use.value.labels se TRUE (default), le etichette vengono trasformate in livelli dei dattori
to.data.frame se TRUE (default), i dati vengono importati in un Dataframe
charfactor se FALSE (default), le variabili di testo NON vengono convertite in fattori

Per altri argomenti, cfr. la guida di Hmisc.

Es.:

require(Hmisc)
mydata <- spss.get("mydata.sav", datevars=c("datanascita","datainterv"))

da SAS

# argomenti di sasxport.get
sasxport.get(file, lowernames=TRUE, force.single = TRUE,
             method=c('read.xport','dataload','csv'), formats=NULL, allow=NULL,
             out=NULL, keep=NULL, drop=NULL, as.is=0.5, FUN=NULL) 

Richiede il file di esportazione di SAS (.xpt).

Esempio:

require(Hmisc)
mydata <- sasxport.get("mydata.xpt")

Per altri argomenti e opzioni, cfr. l'help di Hmisc.

Dopo l'importazione

1)
tratto da R4Stats
2)
Ha. Wickham & J. Bryan (2018). readxl: Read Excel Files. R package version 1.1.0. https://CRAN.R-project.org/package=readxl.