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.

Lesxl_Eksempel

For รฅ sjekke plasseringen av regnearket kalt clippy.xls, enkel bruk

readxl_example("geometry.xls")

Lesxl_Eksempel

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

  1. Bruk n_max argument for รฅ returnere n rader
  2. 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)

Excel_Sheets

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

Excel_Sheets

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.

Excel_Sheets

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

Excel_Sheets

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)

Excel_Sheets

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

  1. sum
  2. 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โ€)

Oppsummer dette innlegget med: