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.

  • ๐Ÿ“„ CSV-import: read.csv(fil, header = TRUE, sep = โ€œ,โ€) laster inn en kommaseparert fil fra en lokal sti eller en URL.
  • โš ๏ธ Versjonsendring: Siden R 4.0.0 forblir tegnkolonner tegn, fordi stringsAsFactors nรฅ har standardverdien FALSE.
  • ๐Ÿ“— Excel-import: read_excel() fra readxl hรฅndterer bรฅde .xls og .xlsx, og excel_sheets() viser alle regneark fรธrst.
  • ๐ŸŽฏ Presist utvalg: n_max begrenser rader, range tar Excel-notasjon, og cell_rows() eller cell_cols() tar indekser og bokstaver.
  • ๐Ÿ”„ Annen programvare: haven leverer read_sas(), read_dta() og read_sav(), som hver bare trenger en sti eller URL.
  • ๐Ÿงน Ren inngang: Kod manglende verdier som NA og unngรฅ mellomrom eller symboler i kolonnenavn fรธr import.

Importer data i R

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.

Lesxl_Eksempel

For รฅ sjekke plasseringen til et bestemt regneark, oppgi navnet:

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

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

  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 genererte readxl fem plassholdernavn. Eldre versjoner produserte X__1 til X__5, mens nรฅvรฆrende versjoner produserer โ€ฆ1 til โ€ฆ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)

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.

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)

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.

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

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():

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

Spรธrsmรฅl og svar

R 4.0.0 endret standardinnstillingen for stringsAsFactors fra TRUE til FALSE. Tegnkolonner forblir nรฅ tegn. Send argumentet eksplisitt hvis skriptet ditt mรฅ oppfรธre seg identisk pรฅ eldre R-versjoner.

Bytt ut URL med den fullstendige lokale stien i anfรธrselstegn, for eksempel ยซC:/Brukere/navn/data.csvยป. Bruk skrรฅstreker fremover eller doble omvendte skrรฅstreker pรฅ Windows, og bekreft arbeidsmappen med getwd().

readxl leser .xls og .xlsx i ren R uten Java avhengighet. Bare den eldre xlsx-pakken krever Java gjennom rJava, og det er derfor readxl er det anbefalte valget.

Stille typeendringer ved import er en vanlig kilde til ikke-reproduserbare AI-resultater. ร… deklarere kolonnetyper eksplisitt, slik read_csv() rapporterer dem, sikrer at et treningsdatasett lastes inn identisk hver gang.

Ja. AI-assistenter kan diagnostisere feil separatorer, kodingsproblemer og feillesing av overskrifter fra en feilmelding. Bekreft alltid resultatet med str() eller glimpe() fรธr du fortsetter analysen.

Oppsummer dette innlegget med: