Importa dati in R: leggi file CSV, Excel, SPSS, Stata, SAS

I dati potrebbero esistere in vari formati. Per ogni formato R ha una funzione e un argomento specifici. Questo tutorial spiega come importare dati in R.

Leggi CSV

Uno degli archivi dati più diffusi sono i formati di file .csv (valori separati da virgole). R carica una serie di librerie durante l'avvio, incluso il pacchetto utils. Questo pacchetto è utile per aprire file CSV combinati con la funzione reading.csv(). Ecco la sintassi per read.csv

read.csv(file, header = TRUE, sep = ",")

Argomento:

  • filetto: PERCORSO in cui è archiviato il file
  • testata: conferma se il file ha o meno un'intestazione, per impostazione predefinita l'intestazione è impostata su TRUE
  • settembre: il simbolo utilizzato per dividere la variabile. Per impostazione predefinita, `,`.

Leggeremo il nome del file di dati mtcats. Il file CSV viene archiviato online. Se il tuo file .csv è archiviato localmente, puoi sostituire il PERCORSO all'interno dello snippet di codice. Non dimenticare di avvolgerlo all'interno ''. Il PATH deve essere un valore stringa.

Per gli utenti Mac, il percorso della cartella di download è:

 "/Users/USERNAME/Downloads/FILENAME.csv"

Per gli utenti Windows:

"C:\Users\USERNAME\Downloads\FILENAME.csv"

Tieni presente che dovremmo sempre specificare l'estensione del nome del file.

  • . Csv
  • . Xlsx
  • txt
  • ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'                
df <- read.csv(PATH, header =  TRUE, sep = ',')
length(df)

Uscita

## [1] 12
class(df$X)

Uscita

## [1] "factor"

R, per impostazione predefinita, restituisce i valori dei caratteri come Fattore. Possiamo disattivare questa impostazione aggiungendo stringsAsFactors = FALSE.

PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE)
class(df$X)

Uscita

## [1] "character"

La classe per la variabile X ora è un carattere.

Leggere file Excel

Excel i file sono molto popolari tra gli analisti di dati. I fogli di calcolo sono facili da utilizzare e flessibili. R è dotato di una libreria readxl per importare fogli di calcolo Excel.

Usa questo codice

require(readxl)

per verificare se readxl è installato nel tuo computer. Se installi r con r-conda-essential, la libreria è già installata. Dovresti vedere nella finestra di comando:

Uscita

Loading required package: readxl.

Se il pacchetto non esce, puoi installarlo con conda biblioteca oppure nel terminale, usa conda install -c mittner r-readxl.

Utilizzare il seguente comando per caricare la libreria per importare i file Excel.

library(readxl)

readxl_esempio()

Utilizzeremo gli esempi inclusi nel pacchetto readxl durante questo tutorial.

Usa il codice

readxl_example()

per vedere tutti i fogli di calcolo disponibili nella libreria.

Readxl_Esempio

Per verificare la posizione del foglio di calcolo denominato clippy.xls, è semplice utilizzarlo

readxl_example("geometry.xls")

Readxl_Esempio

Se installi R con conda, i fogli di calcolo si trovano in Anaconda3/lib/R/library/readxl/extdata/filename.xls

leggi_excel()

La funzione read_excel() è di grande utilità quando si tratta di aprire l'estensione xls e xlsx.

La sintassi è:

read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE)
arguments:
-PATH: Path where the excel is located
-sheet: Select the sheet to import. By default, all
-range: Select the range to import. By default, all non-null cells
-col_names: Select the columns to import. By default, all non-null columns

Possiamo importare i fogli di calcolo dalla libreria readxl e contare il numero di colonne nel primo foglio.

# Store the path of `datasets.xlsx`
example <- readxl_example("datasets.xlsx")
# Import the spreadsheet
df <- read_excel(example)
# Count the number of columns
length(df)

Uscita

## [1] 5

fogli_excel()

Il file datasets.xlsx è composto da 4 fogli. Possiamo scoprire quali fogli sono disponibili nella cartella di lavoro utilizzando la funzione excel_sheets()

example <- readxl_example("datasets.xlsx")

excel_sheets(example)

Uscita

[1] "iris"     "mtcars"   "chickwts" "quakes"

Se un foglio di lavoro include molti fogli, è semplice selezionare un foglio particolare utilizzando gli argomenti del foglio. Possiamo specificare il nome del foglio o l'indice del foglio. Possiamo verificare se entrambe le funzioni restituiscono lo stesso output con identico().

example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)

Uscita

## [1] TRUE

Possiamo controllare quali celle leggere in 2 modi

  1. Utilizza l'argomento n_max per restituire n righe
  2. Utilizza l'argomento intervallo combinato con cell_rows o cell_cols

Ad esempio, impostiamo n_max uguale a 5 per importare le prime cinque righe.

# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)

Fogli_Excel

Se cambiamo col_names in FALSE, R crea automaticamente le intestazioni.

# Read the first five row: without header
iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)

iris_no_header

Nel frame di dati iris_no_header, R ha creato cinque nuove variabili denominate X__1, X__2, X__3, X__4 e X__5

Fogli_Excel

Possiamo anche utilizzare l'intervallo di argomenti per selezionare righe e colonne nel foglio di calcolo. Nel codice seguente, utilizziamo lo stile Excel per selezionare l'intervallo da A1 a B5.

# Read rows A1 to B5
example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE)
dim(example_1)

Uscita

## [1] 4 2

Possiamo vedere che example_1 restituisce 4 righe con 2 colonne. Il set di dati ha un'intestazione, motivo per cui la dimensione è 4×2.

Fogli_Excel

Nel secondo esempio utilizziamo la funzione cell_rows() che controlla l'intervallo di righe da restituire. Se vogliamo importare le righe da 1 a 5, possiamo impostare cell_rows(1:5). Tieni presente che cell_rows(1:5) restituisce lo stesso output di cell_rows(5:1).

# Read rows 1 to 5
example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE)			
dim(example_2)

Uscita

## [1] 4 5

L'esempio_2 invece è una matrice 4×5. Il set di dati dell'iride ha 5 colonne con intestazione. Restituiamo le prime quattro righe con l'intestazione di tutte le colonne

Fogli_Excel

Nel caso in cui vogliamo importare righe che non iniziano dalla prima riga, dobbiamo includere col_names = FALSE. Se usiamo range = cell_rows(2:5), diventa ovvio che il nostro frame di dati non ha più un'intestazione.

iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE)
iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)

Fogli_Excel

We can select the columns with the letter, like in Excel.
# Select columns A and B
col <-read_excel(example, range =cell_cols("A:B"))
dim(col)

Uscita

## [1] 150   2

Nota: range = cell_cols("A:B"), restituisce in output tutte le celle con valore diverso da null. Il set di dati contiene 150 righe, pertanto read_excel() restituisce righe fino a 150. Ciò viene verificato con la funzione dim().

read_excel() restituisce NA quando nella cella appare un simbolo senza valore numerico. Possiamo contare il numero di valori mancanti con la combinazione di due funzioni

  1. somma
  2. is.na

Ecco il codice

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

Uscita

## [1] 50

Mancano 50 valori, che sono le righe appartenenti alla specie setosa.

Importa dati da altri software statistici

Importeremo diversi formati di file con il pacchetto heaven. Questo pacchetto supporta SAS, software STATA e SPSS. Possiamo usare la seguente funzione per aprire diversi tipi di dataset, in base all'estensione del file:

  • SAS: leggi_sas()
  • STATA: read_dta() (o read_stata(), che sono identici)
  • SPSS: read_sav() o read_por(). Dobbiamo controllare l'estensione

All'interno di queste funzioni è richiesto un solo argomento. Dobbiamo conoscere il PERCORSO in cui è archiviato il file. Questo è tutto, siamo pronti per aprire tutti i file da SAS, STATA e SPSS. Queste tre funzioni accettano anche un URL.

library(haven)

haven viene fornito con conda r-essential altrimenti vai al link oppure nel terminale conda install -c conda-forge r-haven

Leggi sas

Per il nostro esempio, utilizzeremo il set di dati di ammissione di IDRE.

PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true'
df <- read_sas(PATH_sas)
head(df)

Uscita

## # A tibble: 6 x 4
##   ADMIT   GRE   GPA  RANK
##   <dbl> <dbl> <dbl> <dbl>
## 1     0   380  3.61     3
## 2     1   660  3.67     3
## 3     1   800  4.00     1
## 4     1   640  3.19     4
## 5     0   520  2.93     4
## 6     1   760  3.00     2

Leggi STATO

Per i file di dati STATA puoi usare read_dta(). Usiamo esattamente lo stesso set di dati ma memorizziamo nel file .dta.

PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true'
df <- read_dta(PATH_stata)
head(df)

Uscita

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3				
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

Leggi SPSS

Usiamo la funzione read_sav() per aprire un file SPSS. L'estensione del file “.sav”

PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true'
df <- read_sav(PATH_spss)
head(df)

Uscita

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3			
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

migliori pratiche per l'importazione dei dati

Quando vogliamo importare dati in R, è utile implementare la seguente checklist. Semplificherà l'importazione corretta dei dati in R:

  • Il formato tipico per un foglio di calcolo consiste nell'utilizzare le prime righe come intestazione (solitamente il nome delle variabili).
  • Evitare di denominare un set di dati con spazi vuoti; può portare all'interpretazione come una variabile separata. In alternativa, preferisci utilizzare '_' o '-.'
  • Sono preferiti i nomi brevi
  • Non includere il simbolo nel nome: ad esempio: tasso_di_cambio_$_€ non è corretto. Preferisco chiamarlo: tasso_di_cambio_dollaro_euro
  • In caso contrario, utilizzare NA per i valori mancanti; in seguito sarà necessario ripulire il formato.

Sommario

La tabella seguente riassume la funzione da utilizzare per importare diversi tipi di file in R. La prima colonna indica la libreria correlata alla funzione. L'ultima colonna si riferisce all'argomento predefinito.

Biblioteca Obiettivo Funzione Argomenti predefiniti
utils Leggi il file CSV leggi.csv() file, intestazione =,TRUE, sep = “,”
readxl Leggi il file EXCEL leggi_excel() percorso, intervallo = NULL, col_names = TRUE
porto Leggi il file SAS leggi_sas() sentiero
porto Leggi il file STATA leggi_stata() sentiero
porto Leggi il file SPSS leggi_sav() sentiero

La tabella seguente mostra i diversi modi per importare una selezione con la funzione read_excel().

Funzione Obiettivo argomenti
leggi_excel() Leggi n numero di righe n_massimo = 10
Seleziona righe e colonne come in Excel intervallo = “A1:D10”
Seleziona le righe con gli indici intervallo=righe_cella(1:3)
Seleziona le colonne con le lettere intervallo = cell_cols("A:C")