mercoledì 28 novembre 2018

Importazione dei dati da un file .xls o .xlsx

Il formato dati raccomandato di R è il formato .csv e consente prima dell'importazione una ispezione preliminare dei dati, che sono accessibili in chiaro, semplicemente aprendo il file .csv con un editor di testo.

I formati .xls e .xlsx sono invece formati binari, nei quali i dati non sono accessibili in chiaro, e non sono formati standardizzati per cui la struttura dei file potrebbe cambiare senza preavviso nelle nuove versioni dei programmi che salvano in questi formati, causando errori imprevedibili e pertanto non gestibili nell’importazione dei dati in R [1]. Nonostante questo, data la larga diffusione dei dati salvati in questi formati, in R si trovano pacchetti che consentono di importare i dati direttamente da file .xls e .xlsx come ad esempio il pacchetto xlsx che si può scaricate dal CRAN (Comprehensive R Archive Network) selezionando nel menù Pacchetti di R l’opzione Installa pacchetti… e quindi selezionando xlsx dall’elenco dei pacchetti disponibili.

Per la documentazione completa del pacchetto xlsx vedere il suo manuale di riferimento [2]. Se nel menù Aiuto di R selezionate Guida Html nella sezione Reference alla voce Packages trovate la documentazione dei pacchetti che avete installato sul vostro PC o notebook e che include, però in una versione meno completa, la documentazione del pacchetto xlsx.

Potete anche digitare help(read.xlsx) nella Console di R per una documentazione concisa ed essenziale della funzione read.xlsx().

Per proseguire ora è necessario:
effettuare il download del file importa_xls.xls
effettuare il download del file importa_xlsx.xlsx
salvare i file nella cartella C:\Rdati\

Per questo e gli altri file di dati impiegati nei post trovate link e modalità di download alla pagina Dati.

Copiate e incollate nella Console di R questo script e premete ↵ Invio:

# IMPORTA I DATI DI UN FILE XLS
#
# carica il pacchetto xlsx
require(xlsx)
# carica nell'oggetto mydata i dati del file e del foglio specificati, notare / invece di \ su windows
mydata <- read.xlsx("C:/Rdati/importa_xls.xls", sheetName="peso_altezza")
#

La funzione require() carica in R il pacchetto xlsx contenente la funzione read.xlsx() che permette di importare i dati.

Gli unici argomenti richiesti dalla funzione read.xlsx() sono il nome del file con il percorso completo ("C:/Rdati/importa_xls.xls") e il nome del foglio che contiene i dati (sheetName="peso_altezza") all’interno del file. Quest'ultimo argomento è cruciale in quanto permette di gestire i molteplici fogli che possono essere presenti all'interno di un unico file .xls o xlsx.

Se ora digitate mydata e premete ↵ Invio potete scorrere nella Console di R i dati che sono stati importati:

> mydata
  id sesso anni peso_kg altezza_m
1 MT     M   69      76      1.78
2 GF     F   56      63        NA
3 MC     F   53      71      1.60
4 SB     M   28      73      1.78
5 FE     F   61      54      1.54
6 AB     M   46      92      1.84
7 RF     F   31      81      1.56

Per avere la conferma del fatto che i dati sono stati importati correttamente confrontateli con l’originale aprendo il file con Excel o in alternativa con un programma appartenente alla categoria del software libero [3] come OpenOffice calc o LibreOffice calcLa sola differenza che riscontrerete risiederà nel separatore dei decimali, che nel foglio elettronico vedrete essere (nella configurazione italiana di Windows) la virgola (,) mentre nei dati importati trovate il punto (.) che è il separatore delle cifre decimali impiegato da R.

Notare che R assegna automaticamente un identificativo univoco numerico (1, 2, eccetera) ai casi/righe.

Per importare un file .xlsx copiate e incollate nella Console di R questo script e premete ↵ Invio:

# IMPORTA I DATI DI UN FILE XLSX
#
# carica il pacchetto xlsx
require(xlsx)
# carica nell'oggetto mydata i dati del file e del foglio specificati, notare / invece di \ su windows
mydata <- read.xlsx("C:/Rdati/importa_xlsx.xlsx", sheetName="peso_altezza", row.names="id")
#

Questa volta l'argomento row.names="id" specifica che gli identificativi univoci dei casi sono contenuti nel campo id del file. Se ora digitate mydata e premete ↵ Invio potete scorrere nella Console di R i dati che sono stati importati

> mydata
   sesso anni peso_kg altezza_m
MT     M   69      76      1.78
GF     F   56      63        NA
MC     F   53      71      1.60
SB     M   28      73      1.78
FE     F   61      54      1.54
AB     M   46      92      1.84
RF     F   31      81      1.56

nei quali l'identificativo univoco numerico di R non compare più, essendo stato sostituito da quello già presente nei dati importati.


Importare in R file .xls e .xlsx salvati con un foglio elettronico è quindi semplice. Tuttavia si ricorda che qualsiasi foglio elettronico è in grado di salvare i dati anche in formato .csv e che è questo il formato raccomandato da R (vedere  il post Importazione dei dati da un file .csv).


----------

[1] Il manuale ufficiale R Data Import/Export a pag. 29 così recita: "The most common R data import/export question seems to be ‘how do I read an Excel spreadsheet’ ... The first piece of advice is to avoid doing so if possible!". URL consultato il 17/10/2018: https://goo.gl/8mzH4L

[2] xlsx: Read, Write, Format Excel 2007 and Excel 97/2000/XP/2003 Files. URL consultato il 28/11/2018: https://goo.gl/DJCHTx

[3] Per il significato di Software libero, di Software open source e di Software di dominio pubblico vedere: The Free Software Foundation. GNU Operating System. Categories of free and nonfree software. URL consultato il 28/11/2018: https://goo.gl/MqwM2Q

Nessun commento:

Posta un commento