Importer data i R: Les CSV, Excel, SPSS, Stata, SAS-filer
โก Smart oppsummering
Import av data i R dekker lesing av CSV-filer med read.csv(), Excel-arbeidsbรธker med readxl og SAS-, STATA- eller SPSS-filer med haven. Denne gjennomgangen viser ogsรฅ hvordan du velger ark, rader og celleomrรฅder presist ved import.

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-filer
Det mest brukte dataformatet er .csv, kommaseparerte verdier. R laster inn en rekke biblioteker under oppstart, inkludert utils-pakken. Denne pakken inneholder read.csv(), standardmรฅten for รฅ รฅpne en CSV-fil. Her er syntaksen:
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)
Utgang:
## [1] 12
class(df$X)
Utgang:
## [1] "factor"
I R-versjoner fรธr 4.0.0 konverterte read.csv() hver tegnkolonne til en faktor, og det er derfor class(df$X) returnerer ยซfaktorยป ovenfor. Du kan slรฅ den av med stringsAsFactors = FALSE.
โ ๏ธ Versjonsmerknad: siden R 4.0.0 Standardinnstillingen er stringsAsFactors = FALSE, sรฅ tegnkolonner forblir tegn, og det fรธrste eksemplet returnerer nรฅ ยซtegnยป pรฅ en moderne installasjon. ร sende argumentet eksplisitt, som nedenfor, gir samme resultat pรฅ alle versjoner og er den tryggeste vanen.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
Utgang:
## [1] "character"
Klassen for variabelen X er nรฅ et tegn.
read.csv() vs read_csv(): Hvilken bรธr du bruke?
read.csv() leveres med base R og trenger ingen pakke. Readr-pakken legger til read_csv(), som er raskere og tar fรฆrre avgjรธrelser pรฅ dine vegne.
| Kriterier | les.csv() (verktรธy) | read_csv() (readr) |
|---|---|---|
| Pakke nรธdvendig | none | leser |
| Hastighet pรฅ store filer | Langsommere | Flere ganger raskere |
| Returer | data.frame | tibble |
| Kolonnenavn | Mellomrom konvertert til prikker | Oppbevares nรธyaktig som skrevet |
| Typedeteksjon | Silent | Rapportert i en kolonnespesifikasjon |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
Bruk read.csv() for smรฅ filer og skript som mรฅ kjรธres uten ekstra pakker. Bruk read_csv() nรฅr filen er stor eller nรฅr det er viktig รฅ bevare de nรธyaktige kolonnenavnene.
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:
Utgang:
Loading required package: readxl.
Hvis pakken ikke er installert, 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 til et bestemt regneark, oppgi navnet:
readxl_example("geometry.xls")
Hvis du installerer R med conda, ligger regnearkene i Anaconda3/lib/R/library/readxl/extdata/filnavn.xls
read_excel()
read_excel() รฅpner bรฅde .xls- og .xlsx-utvidelsene og velger automatisk riktig parser.
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)
Utgang:
## [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)
Utgang:
[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)
Utgang:
## [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 genererte readxl fem plassholdernavn. Eldre versjoner produserte X__1 til X__5, mens nรฅvรฆrende versjoner produserer โฆ1 til โฆ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)
Utgang:
## [1] 4 2
example_1 returnerer 4 rader og 2 kolonner. Omrรฅdet A1:B5 dekker fem regnearkrader, men den fรธrste brukes som overskrift, og det er derfor dimensjonen er 4 ganger 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)
Utgang:
## [1] 4 5
example_2 er derimot 4 ganger 5. cell_rows(1:5) behandler igjen den fรธrste raden som overskrift, slik at fire datarader returneres pรฅ tvers av alle fem 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)
Du kan ogsรฅ velge kolonner etter bokstav, akkurat som i Excel:
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
Utgang:
## [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.
na-argumentet forteller read_excel() hvilke verdier som skal behandles som manglende. Tell dem med sum() og is.na():
- sum
- is.na
Her er koden
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Utgang:
## [1] 50
Vi mangler 50 verdier, som er radene som tilhรธrer setosaarten.
Importer data fra annen statistikkprogramvare
Filer fra andre statistikkpakker importeres med haven pakke, som stรธtter SAS, STATA og SPSS. Vi kan bruke fรธlgende funksjon for รฅ รฅpne forskjellige typer datasett, avhengig av filtypen:
- SAS: read_sas()
- STATA: read_dta() (eller read_stata(), som er identiske)
- SPSS: read_sav() eller read_por(). Vi mรฅ sjekke utvidelsen
Hver av disse funksjonene trenger bare ett argument, PATH-en der filen er lagret, og hver godtar en URL like lett som en lokal sti.
library(haven)
havn kommer med conda r-essensielle ellers gรฅ til link eller i terminalen conda installer -c conda-forge r-haven
Les SAS-filer
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)
Utgang:
## # 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-filer
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)
Utgang:
## # 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-filer
read_sav() รฅpner en SPSS-fil med filtypen .sav.
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
Utgang:
## # 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
Beste praksis for dataimport
ร gรฅ gjennom sjekklisten nedenfor fรธr import sparer deg for mesteparten av rengjรธringsarbeidet etterpรฅ:
- Det typiske formatet for et regneark er รฅ bruke de fรธrste radene som overskrift (vanligvis variabelnavn).
- Unngรฅ mellomrom i et fil- eller kolonnenavn, da de kan leses som et kolonneskilletegn. Bruk et understrek i stedet.
- Korte navn foretrekkes
- Ikke bruk symboler i et navn. Skriv valutakurs_dollar_euro i stedet for valutakurs_$_โฌ.
- Kod manglende verdier som NA i stedet for som blanktegn, bindestreker eller varslingstall som -99, som ellers mรฅ renses etterpรฅ.
Importere data i R: Funksjonsreferanse
Tabellen nedenfor viser importfunksjonen for hver filtype, biblioteket som leverer den, og standardargumentene:
| Bibliotek | Mรฅlet | Funksjon | Standardargumenter |
|---|---|---|---|
| utils | Les CSV-fil | read.csv() | fil, overskrift = SANN, sep = ยซยป |
| readxl | Les EXCEL-filen | read_excel() | bane, omrรฅde = NULL, kolonnenavn = TRUE |
| haven | Les SAS-fil | read_sas() | banen |
| haven | Les STATA-filen | les_dta() / les_stata() | banen |
| haven | Les SPSS-filen | read_sav() | banen |
Den andre tabellen viser mรฅtene รฅ importere et utvalg med read_excel():
| 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โ) |







