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:
Prima di importare i dati in un dataframe, bisogna prepararli, facendo attenzione a:
NA
; 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 |
Valgono le stesse indicazioni per Excel.
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.
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.
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 |
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).
Definiamo come directory di lavoro quella in cui collochiamo il file esportato, per maggiore comodità.
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).
In questo video viene mostrata ad esempio l'importazione di un file csv da url (YouTube).
Per importare i file di Excel in formato xls e xlsx, è molto comodo e semplice da usare il pacchetto readxl
2):
# 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
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:
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")
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:
mydata <- read.delim2("myfile.txt")
Queste funzioni fanno parte ed hanno gli stessi argomenti della funzione generica di importazione dei dati read.table
.
È 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.
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"))
# 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.
colnames
) - vedi Variabili e vettori: etichette;