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.
Sammendrag
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โ) |







