ApRire un file SPSS oppure Excel in R

R è un sistema potente per l’analisi statistica e per la rappresentazione grafica. Tuttavia, non è esattamente user-friendly per l’archiviazione dei dati. Per un bel po’ ancora i vostri dati saranno archiviati in Excel o in SPSS o simili.

Da SPSS a R

Come aprire in R un file archiviato in altro sistema? Ci sono librerie (packages) come foreign che consentono di effettuare l’operazione. La libreria foreign è già installata nella distribuzione base del sistema: è sufficiente attivarla con la funzione library.

> library(foreign)

A questo punto potete aprire il vostro file, se sapete dove si trova…

Il metodo più semplice per localizzare un file (lo so, lo so, settare la directory, ma io sono uno di modi spicci) è digitare:

> file.choose()

Si aprirà una finestra come quella di Windows per l’accesso ai file, cercate il vostro file nelle cartella dove lo avete archiviato, e via. R vi restituisce la path, cioè il percorso:

> "C:\\Users\\Antonio\\Desktop\\Traferire in MAC\\InsulaR\\DatabaseEsempio.sav"

A questo punto potete dare il comando di lettura file in SPSS da foreign, specificando la path che conduce al file (sì, avete capito, copia e incolla tra virgolette):

dataset = read.spss("C:\\Users\\Antonio\\Desktop\\Traferire in MAC\\InsulaR\\DatabaseEsempio.sav", to.data.frame=TRUE)

Volete risparmiarvi il copia e incolla? Assegnate l’operazione file.choose() a un oggetto, chiamiamolo db (abbreviazione per database):

> db = file.choose()

Come prima, avete ottenuto il percorso al file, solo che questa volta il sistema non ve lo visualizza perché voi l’avete assegnato all’oggetto db. Quindi, ora l’oggetto db contiene una stringa di caratteri che indentifica il percorso che R dovrà seguire per recuperare il file.

Pronti via?

dataset = read.spss(db, to.data.frame=TRUE)

Il comando read.spss() legge il dataset in formato sav; bisogna stare attenti però a specificare come TRUE l’argomento to.data.frame, il quale richiede alla funzione di disporre i dati all’interno di un data frame (ovvero una tabella di dati).

Yolo, man. Un altro metodo molto semplice di aprire un file SPSS in R è salvare il file in un formato che R gestisce molto bene: il .dat (delimitato da tabulazione). Salvate il vostro file SPSS in .dat e operate come prima, andando alla ricerca del file con la funzione file.choose() e assegnando la stringa risultante a un oggetto.

La funzione per leggere il file stavolta è read.table(). Prestate molta attenzione ai dati mancanti: se ce ne sono, bisogna dire a R quale codice li identifica (es. 99), specificando un valore per l’argomento na.strings.

Avete il vostro file in .dat?

db = file.choose()
dataset = read.table(db, header = TRUE)

l’argomento header = TRUE serve per specificare che la prima riga del file contiene i nomi delle variabili per cui questi valori non sono da interpretare come dati.

Da Excel a R

Per importare in R un file da Excel ci sono molti metodi diversi e purtroppo nessuno è esente da problemi. Uno l’abbiamo già visto in questo post, ma ce ne sono di più semplici. Il metodo più immediato richiede due passaggi: 1) esportare il foglio di dati Excel in file formato testuale, 2) leggere il nuovo file attraverso le funzioni R. Per la verità, questo metodo è valido non solo per il programma Excel di Microsoft ma anche per l’applicativo Calc di LibreOffice/OpenOffice

Per prima cosa, utilizzando il menù di Excel, si deve salvare il file in formato csv. Excel fornisce diverse opzioni: CSV (delimitato da separatore di elenco), CSV (Macintosh) e CSV (MS-DOS). Nella pratica, un’opzione vale l’altra.

Il risultato sarà un file testuale che contiene tante righe quante erano le righe dell’originale Excel, con i dati separati da un punto e virgola all’interno di ogni riga. La virgola, invece, viene utilizzata come separatore decimale. Questo formato è quello che R chiama csv2, che è lo standard più utilizzato nell’Europa mediterranea. Il resto del mondo, invece, utilizza non il punto e virgola ma la virgola come separatore di campo e il punto come separatore decimale. Utilizzare il csv è molto comodo, non solo perché Excel lo riconosce e lo apre automaticamente ma anche perché è il formato standard con il quale vengono condivisi il dati.

Una volta esportato il file in csv, lo potete importare in R utilizzando i comandi:

db = file.choose()
dataset = read.csv2(db)

Nel lanciare read.csv2(), bisogna prendere alcune precauzioni. Prima di tutto, per default la funzione assume che la prima riga contiene i nomi che dovranno essere assegnati alle colonne (header = TRUE). Se invece la prima riga non contiene le etichette da utilizzare come nomi di colonna, bisognerà specificare header = FALSE. In secondo luogo, possiamo anche indicare alla funzione qual è il codice usato per codificare i dati mancanti; useremo na.strings = "" se le celle vuote corrispondono a dati mancanti, ma potremo anche utilizzare altri valori come ad esempio na.strings = 99.

Se il separatore di campo del file csv non è il punto e virgola ma la virgola e il separatore decimale è il punto, il comando da usare sarà read.csv(). Da notare che le due funzioni read.csv() e read.csv2() altro non sono che dei casi specifici di read.table() e, a dirla tutta, si potrebbe anche usare la stessa funzione read.table() per leggere un file csv:

dataset = read.table(db, sep=";", dec=",", header=TRUE)

Verificare che la lettura sia andata a buon fine

Una volta importato un file, è sempre bene fare dei controlli per verificare che la lettura sia andata a buon fine.

Per controllare le dimensioni del vostro database, usate la funzione dim. Vi restituirà due numeri, il primo si riferisce ai casi (le righe del vostro database), mentre il secondo numero è quello delle variabili (le colonne del vostro database). Facciamo un esempio con un database che avete chiamato MieiDati:

> dim(MieiDati)

Inoltre, può essere utile visualizzare un’anteprima dei dati. Per ispezionare le prime 6 righe del vostro database, usate la funzione head:

> head(MieiDati)

Per ispezionare le ultime 6 righe del vostro database, usate la funzione tail:

> tail(MieiDati)

Per ispezionare la struttura del database, usate la funzione str:

> str(MieiDati)

Volete visualizzare tutta la matrice di dati? Se la tabella di dati è grossa, vi conviene usare la funzione View, oppure fix che vi consentirà anche di modificare manualmente il contenuto delle celle:

> View(MieiDati)
> fix(MieiDati)

Antonello Preti

Print Friendly

4 Commenti per “ApRire un file SPSS oppure Excel in R

  1. Pingback: How to open an SPSS file into R ← Patient 2 Earn

  2. Pingback: How to open an SPSS file into R | Milano R net

  3. Pingback: InsulaR

  4. Pingback: Esportare dati da R a Excel | InsulaR

Lascia un Commento