Importer data i R: Les CSV, Excel, SPSS, Stata, SAS-filer
Data kan eksistere i ulike formater. For hvert format R har en bestemt funksjon og argument. Denne opplæringen forklarer hvordan du importerer data til R.
Les CSV
En av de mest utbredte datalagrene er .csv-filformatene (kommaseparerte verdier). R laster inn en rekke biblioteker under oppstarten, inkludert utils-pakken. Denne pakken er praktisk for å åpne csv-filer kombinert med funksjonen reading.csv(). Her er syntaksen for read.csv
read.csv(file, header = TRUE, sep = ",")
Argument:
- fil: PATH hvor filen er lagret
- header: bekreft om filen har en overskrift eller ikke, som standard er overskriften satt til TRUE
- september: symbolet som brukes til å dele variabelen. Som standard, `,`.
Vi vil lese datafilnavnet mtcats. Csv-filen lagres online. Hvis .csv-filen din er lagret lokalt, kan du erstatte PATH inne i kodebiten. Ikke glem å pakke den inn i ' '. PATH må være en strengverdi.
For Mac-brukere er banen for nedlastingsmappen:
"/Users/USERNAME/Downloads/FILENAME.csv"
For Windows-brukere:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Merk at vi alltid bør spesifisere filtypen til filnavnet.
- . Csv
- . Xlsx
- .txt
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
Produksjon
## [1] 12
class(df$X)
Produksjon
## [1] "factor"
R returnerer som standard tegnverdier som faktor. Vi kan slå av denne innstillingen ved å legge til 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)
Produksjon
## [1] "character"
Klassen for variabelen X er nå et tegn.
Les Excel-filer
Excel filer er veldig populære blant dataanalytikere. Regneark er enkle å jobbe med og fleksible. R er utstyrt med et bibliotek readxl for å importere Excel-regneark.
Bruk denne koden
require(readxl)
for å sjekke om readxl er installert på maskinen din. Hvis du installerer r med r-conda-essential, er biblioteket allerede installert. Du bør se i kommandovinduet:
Produksjon
Loading required package: readxl.
Hvis pakken ikke går ut, kan du installere den med conda bibliotek eller i terminalen, bruk conda install -c mittner r-readxl.
Bruk følgende kommando for å laste biblioteket for å importere excel-filer.
library(readxl)
readxl_example()
Vi bruker eksemplene som er inkludert i pakken readxl under denne opplæringen.
Bruk kode
readxl_example()
for å se alle tilgjengelige regneark i biblioteket.
For å sjekke plasseringen av regnearket kalt clippy.xls, enkel bruk
readxl_example("geometry.xls")
Hvis du installerer R med conda, ligger regnearkene i Anaconda3/lib/R/library/readxl/extdata/filnavn.xls
read_excel()
Funksjonen read_excel() er til stor nytte når det gjelder å åpne xls og xlsx extension.
Syntaxen er:
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
Vi kan importere regnearkene fra readxl-biblioteket og telle antall kolonner i det første arket.
# 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)
Produksjon
## [1] 5
excel_sheets()
Filen datasett.xlsx er sammensatt av 4 ark. Vi kan finne ut hvilke ark som er tilgjengelige i arbeidsboken ved å bruke funksjonen excel_sheets().
example <- readxl_example("datasets.xlsx") excel_sheets(example)
Produksjon
[1] "iris" "mtcars" "chickwts" "quakes"
Hvis et regneark inneholder mange ark, er det enkelt å velge et bestemt ark ved å bruke arkargumentene. Vi kan spesifisere navnet på arket eller arkindeksen. Vi kan verifisere om begge funksjonene returnerer samme utdata med identisk().
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
Produksjon
## [1] TRUE
Vi kan kontrollere hvilke celler som skal leses på 2 måter
- Bruk n_max argument for å returnere n rader
- Bruk områdeargument kombinert med celle_rader eller cellekolonner
For eksempel setter vi n_max lik 5 for å importere de første fem radene.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Hvis vi endrer col_names til FALSE, oppretter R overskriftene automatisk.
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
I datarammen iris_no_header opprettet R fem nye variabler kalt X__1, X__2, X__3, X__4 og X__5
Vi kan også bruke argumentområdet til å velge rader og kolonner i regnearket. I koden nedenfor bruker vi excel-stilen for å velge området A1 til B5.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
Produksjon
## [1] 4 2
Vi kan se at eksempel_1 returnerer 4 rader med 2 kolonner. Datasettet har overskrift, at grunnen til at dimensjonen er 4×2.
I det andre eksemplet bruker vi funksjonen cell_rows() som kontrollerer rekkevidden av rader som skal returneres. Hvis vi ønsker å importere radene 1 til 5, kan vi sette cell_rows(1:5). Merk at cell_rows(1:5) returnerer samme utdata som celle_rows(5:1).
# Read rows 1 to 5 example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE) dim(example_2)
Produksjon
## [1] 4 5
Eksempelet_2 er imidlertid en 4×5-matrise. Iris-datasettet har 5 kolonner med overskrift. Vi returnerer de fire første radene med overskriften på alle kolonnene
I tilfelle vi ønsker å importere rader som ikke begynner på den første raden, må vi inkludere col_names = FALSE. Hvis vi bruker range = cell_rows(2:5), blir det åpenbart at datarammen vår ikke har overskrift lenger.
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)
Produksjon
## [1] 150 2
Merk: range = cell_cols(“A:B”), returnerer utdata fra alle celler med ikke-nullverdi. Datasettet inneholder 150 rader, derfor returnerer read_excel() rader opptil 150. Dette verifiseres med dim()-funksjonen.
read_excel() returnerer NA når et symbol uten numerisk verdi vises i cellen. Vi kan telle antall manglende verdier med kombinasjonen av to funksjoner
- sum
- is.na
Her er koden
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Produksjon
## [1] 50
Vi mangler 50 verdier, som er radene som tilhører setosaarten.
Importer data fra annen statistisk programvare
Vi vil importere forskjellige filformater med himmelpakken. Denne pakken støtter SAS, STATA og SPSS programvare. Vi kan bruke følgende funksjon for å åpne forskjellige typer datasett, i henhold til filtypen:
- SAS: read_sas()
- STATA: read_dta() (eller read_stata(), som er identiske)
- SPSS: read_sav() eller read_por(). Vi må sjekke utvidelsen
Bare ett argument er nødvendig i disse funksjonene. Vi trenger å vite PATH hvor filen er lagret. Det er det, vi er klare til å åpne alle filene fra SAS, STATA og SPSS. Disse tre funksjonene godtar også en URL.
library(haven)
havn kommer med conda r-essensielle ellers gå til link eller i terminalen conda installer -c conda-forge r-haven
Les sas
For vårt eksempel skal vi bruke opptaksdatasettet fra IDRE.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
Produksjon
## # 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
Les STATA
For STATA-datafiler kan du bruke read_dta(). Vi bruker nøyaktig samme datasett, men lagrer i .dta-fil.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
Produksjon
## # 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
Les SPSS
Vi bruker read_sav()-funksjonen for å åpne en SPSS-fil. Filtypen «.sav»
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
Produksjon
## # 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
Gode fremgangsmåter for dataimport
Når vi ønsker å importere data til R, er det nyttig å implementere følgende sjekkliste. Det vil gjøre det enkelt å importere data riktig til R:
- Det typiske formatet for et regneark er å bruke de første radene som overskrift (vanligvis variabelnavn).
- Unngå å navngi et datasett med tomme mellomrom; det kan føre til tolkning som en egen variabel. Alternativt kan du foretrekke å bruke '_' eller '-.'
- Korte navn foretrekkes
- Ikke ta med symbol i navnet: dvs.: exchange_rate_$_€ er ikke riktig. Foretrekk å navngi det: exchange_rate_dollar_euro
- Bruk NA for manglende verdier ellers; vi må rense formatet senere.
Oppsummering
Følgende tabell oppsummerer funksjonen som skal brukes for å importere ulike filtyper i R. Den første kolonnen angir biblioteket knyttet til funksjonen. Den siste kolonnen refererer til standardargumentet.
Bibliotek | Målet | Funksjon | Standardargumenter |
---|---|---|---|
utils | Les CSV-fil | read.csv() | fil, overskrift =, TRUE, sep = "," |
readxl | Les EXCEL-filen | read_excel() | bane, område = NULL, kolonnenavn = TRUE |
haven | Les SAS-fil | read_sas() | banen |
haven | Les STATA-filen | read_stata() | banen |
haven | Les SPSS-filen | read_sav() | banen |
Følgende tabell viser de forskjellige måtene å importere et utvalg med read_excel()-funksjonen.
Funksjon | Målet | argumenter |
---|---|---|
read_excel() | Les n antall rader | n_max = 10 |
Velg rader og kolonner som i excel | område = "A1:D10" | |
Velg rader med indekser | range= cell_rows(1:3) | |
Velg kolonner med bokstaver | range = cell_cols(“A:C”) |