Importați date în R: Citiți fișiere CSV, Excel, SPSS, Stata, SAS
⚡ Rezumat inteligent
Importul datelor în R acoperă citirea fișierelor CSV cu read.csv(), a registrelor de lucru Excel cu readxl și a fișierelor SAS, STATA sau SPSS cu haven. Acest ghid prezintă, de asemenea, cum se selectează cu precizie foile de calcul, rândurile și intervalele de celule la import.

Datele pot exista în diferite formate. Pentru fiecare format R are o funcție și un argument specific. Acest tutorial explică cum să importați date în R.
Citiți fișierele CSV
Cel mai utilizat format de date este .csv, cu valori separate prin virgulă. R încarcă o serie de biblioteci în timpul pornirii, inclusiv pachetul utils. Acest pachet oferă read.csv(), metoda standard de deschidere a unui fișier CSV. Iată sintaxa:
read.csv(file, header = TRUE, sep = ",")
Argument:
- fişier: PATH unde este stocat fișierul
- antet: confirmați dacă fișierul are un antet sau nu, în mod implicit, antetul este setat la TRUE
- sep: simbolul folosit pentru a împărți variabila. În mod implicit, `,`.
Vom citi numele fișierului de date mtcats. Fișierul csv este stocat online. Dacă fișierul dvs. .csv este stocat local, puteți înlocui PATH din fragmentul de cod. Nu uitați să-l înfășurați în interiorul " ". PATH trebuie să fie o valoare șir.
Pentru utilizatorul de Mac, calea pentru folderul de descărcare este:
"/Users/USERNAME/Downloads/FILENAME.csv"
Pentru utilizatorul Windows:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Rețineți că, ar trebui să specificăm întotdeauna extensia numelui fișierului.
- .csv
- .xlsx
- .TXT
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
ieșire:
## [1] 12
class(df$X)
ieșire:
## [1] "factor"
În versiunile R anterioare versiunii 4.0.0, read.csv() convertea fiecare coloană de caractere într-un factor, motiv pentru care class(df$X) returnează „factor” mai sus. Ați putea dezactiva această funcție cu stringsAsFactors = FALSE.
⚠️ Notă privind versiunea: întrucât R 4.0.0 Valoarea implicită este stringsAsFactors = FALSE, deci coloanele de caractere rămân de tip caracter, iar primul exemplu returnează acum „caracter” pe o instalare modernă. Transmiterea explicită a argumentului, ca mai jos, dă același rezultat pe fiecare versiune și este cel mai sigur obicei.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
ieșire:
## [1] "character"
Clasa pentru variabila X este acum un caracter.
read.csv() vs read_csv(): Pe care ar trebui să o utilizați?
read.csv() este livrată cu R de bază și nu necesită niciun pachet. Pachetul readr adaugă read_csv(), care este mai rapid și ia mai puține decizii în numele tău.
| Criterii | citește.csv() (utilități) | read_csv() (readr) |
|---|---|---|
| Pachet necesar | Nici unul | cititor |
| Viteză pe fișiere mari | Mai lent | De câteva ori mai rapid |
| Returnări | date.cadru | tibble |
| Numele coloanelor | Spațiile convertite în puncte | Păstrat exact așa cum este scris |
| Detectarea tipului | Tăcut | Raportat într-o specificație de coloană |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
Folosește read.csv() pentru fișiere mici și scripturi care trebuie să ruleze fără pachete suplimentare. Folosește read_csv() când fișierul este mare sau când este important să păstrezi numele exacte ale coloanelor.
Citirea fișierelor Excel
Excel fișierele sunt foarte populare în rândul analiștilor de date. Foile de calcul sunt ușor de lucrat și flexibile. R este echipat cu o bibliotecă readxl pentru a importa foi de calcul Excel.
Utilizați acest cod
require(readxl)
pentru a verifica dacă readxl este instalat în mașina dvs. Dacă instalați r cu r-conda-essential, biblioteca este deja instalată. Ar trebui să vedeți în fereastra de comandă:
ieșire:
Loading required package: readxl.
Dacă pachetul nu este instalat, îl puteți instala cu conda bibliotecă sau în terminal, utilizați conda install -c mittner r-readxl.
Utilizați următoarea comandă pentru a încărca biblioteca pentru a importa fișiere Excel.
library(readxl)
readxl_example()
Folosim exemplele incluse în pachetul readxl în timpul acestui tutorial.
Folosiți codul de
readxl_example()
pentru a vedea toate foile de calcul disponibile în bibliotecă.
Pentru a verifica locația unei anumite foi de calcul, transmiteți numele acesteia:
readxl_example("geometry.xls")
Dacă instalați R cu conda, foile de calcul se află în Anaconda3/lib/R/library/readxl/extdata/filename.xls
read_excel()
read_excel() deschide ambele extensii, .xls și .xlsx, și alege automat parserul corect.
Sintaxa este:
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
Putem importa foile de calcul din biblioteca readxl și numărăm numărul de coloane din prima foaie.
# 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)
ieșire:
## [1] 5
Excel_sheets()
Fișierul datasets.xlsx este compus din 4 foi. Putem afla ce foi sunt disponibile în registrul de lucru utilizând funcția excel_sheets().
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
ieșire:
[1] "iris" "mtcars" "chickwts" "quakes"
Dacă o foaie de lucru include multe foi, este ușor să selectați o anumită foaie folosind argumentele foii. Putem specifica numele foii sau indexul foii. Putem verifica dacă ambele funcții returnează aceeași ieșire cu identical().
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
ieșire:
## [1] TRUE
Putem controla ce celule să citim în 2 moduri
- Utilizați argumentul n_max pentru a returna n rânduri
- Utilizați argumentul interval combinat cu cell_rows sau cell_cols
De exemplu, setăm n_max egal cu 5 pentru a importa primele cinci rânduri.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Dacă schimbăm col_names în FALSE, R creează automat anteturile.
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
În cadrul de date iris_no_header, readxl a generat cinci nume provizorii. Versiunile mai vechi au produs de la X__1 la X__5, în timp ce versiunile actuale produc de la …1 la …5.
De asemenea, putem folosi intervalul de argumente pentru a selecta rândurile și coloanele din foaia de calcul. În codul de mai jos, folosim stilul excel pentru a selecta intervalul de la A1 la B5.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
ieșire:
## [1] 4 2
example_1 returnează 4 rânduri și 2 coloane. Intervalul A1:B5 acoperă cinci rânduri din foaia de calcul, dar primul este consumat ca antet, motiv pentru care dimensiunea este de 4 pe 2.
În al doilea exemplu, folosim funcția cell_rows() care controlează intervalul de rânduri de returnat. Dacă vrem să importam rândurile de la 1 la 5, putem seta cell_rows(1:5). Rețineți că, cell_rows(1:5) returnează aceeași ieșire ca 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)
ieșire:
## [1] 4 5
example_2, prin contrast, are dimensiunea de 4 pe 5. cell_rows(1:5) tratează din nou primul rând ca antet, astfel încât sunt returnate patru rânduri de date pe toate cele cinci coloane.
În cazul în care dorim să importam rânduri care nu încep la primul rând, trebuie să includem col_names = FALSE. Dacă folosim range = cell_rows(2:5), devine evident cadrul nostru de date nu mai are antet.
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)
De asemenea, puteți selecta coloanele după literă, exact ca în Excel:
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
ieșire:
## [1] 150 2
Notă: interval = cell_cols(„A:B”), returnează toate celulele cu valoare non-nulă. Setul de date conține 150 de rânduri, prin urmare, read_excel() returnează rânduri până la 150. Acest lucru este verificat cu funcția dim().
Argumentul na îi spune lui read_excel() ce valori să trateze ca lipsă. Le numără cu sum() și is.na():
- sumă
- este.na
Iată codul
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
ieșire:
## [1] 50
Ne lipsesc 50 de valori, care sunt rândurile aparținând speciei setosa.
Importul datelor din alte programe software statistice
Fișierele din alte pachete statistice sunt importate cu refugiu pachet, care acceptă SAS, STATA și SPSS. Putem folosi următoarea funcție pentru a deschide diferite tipuri de seturi de date, în funcție de extensia fișierului:
- SAS: read_sas()
- STATA: read_dta() (sau read_stata(), care sunt identice)
- SPSS: read_sav() sau read_por(). Trebuie să verificăm extensia
Fiecare dintre aceste funcții are nevoie de un singur argument, CALEA unde este stocat fișierul și fiecare acceptă un URL la fel de ușor ca o cale locală.
library(haven)
haven vine cu conda r-essential altfel du-te la legătură sau în terminalul conda install -c conda-forge r-haven
Citirea fișierelor SAS
Pentru exemplul nostru, vom folosi setul de date de admitere de la IDRE.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
ieșire:
## # 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
Citirea fișierelor STATA
Pentru fișierele de date STATA puteți utiliza read_dta(). Folosim exact același set de date, dar stocăm în fișierul .dta.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
ieșire:
## # 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
Citirea fișierelor SPSS
Funcția read_sav() deschide un fișier SPSS, care are extensia .sav.
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
ieșire:
## # 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
Cele mai bune practici pentru importul de date
Parcurgerea listei de verificare de mai jos înainte de import scutește de cea mai mare parte a muncii de curățare ulterioare:
- Formatul tipic pentru o foaie de calcul este utilizarea primelor rânduri ca antet (de obicei, numele variabilelor).
- Evitați spațiile goale într-un nume de fișier sau de coloană, deoarece acestea pot fi citite ca separator de coloane. Folosiți în schimb un caracter de subliniere.
- Sunt de preferat numele scurte
- Nu folosiți simboluri în nume. Scrieți curs_de_schimb_dolar_euro în loc de curs_de_schimb_$_€.
- Codificați valorile lipsă ca NA, mai degrabă decât ca spații libere, cratime sau numere santinelă, cum ar fi -99, care altfel ar trebui curățate ulterior.
Importul datelor în R: Referință funcții
Tabelul de mai jos listează funcția de import pentru fiecare tip de fișier, biblioteca care o furnizează și argumentele sale implicite:
| Bibliotecă | Obiectiv | Funcţie | Argumente implicite |
|---|---|---|---|
| utils | Citiți fișierul CSV | read.csv() | fișier, antet = TRUE, sep = „,” |
| readxl | Citiți fișierul EXCEL | read_excel() | cale, interval = NULL, col_names = TRUE |
| refugiu | Citiți fișierul SAS | read_sas() | cale |
| refugiu | Citiți fișierul STATA | citește_dta() / citește_stat() | cale |
| refugiu | Citiți fișierul SPSS | read_sav() | cale |
Al doilea tabel arată modalitățile de importare a unei selecții cu read_excel():
| Funcţie | Obiectiv | Argumente |
|---|---|---|
| read_excel() | Citiți n număr de rânduri | n_max = 10 |
| Selectați rânduri și coloane ca în excel | interval = „A1:D10” | |
| Selectați rânduri cu indici | interval= rânduri_celule(1:3) | |
| Selectați coloanele cu litere | interval = cell_cols(„A:C”) |







