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.

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