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: