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.
Per verificare la posizione del foglio di calcolo denominato clippy.xls, è semplice utilizzarlo
readxl_example("geometry.xls")
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
- Utilizza l'argomento n_max per restituire n righe
- 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)
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
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.
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
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)
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
- somma
- 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") |