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”) |







