Importer data i R: Læs CSV, Excel, SPSS, Stata, SAS filer
Data kan eksistere i forskellige formater. For hvert format R har en bestemt funktion og argument. Denne vejledning forklarer, hvordan du importerer data til R.
Læs CSV
Et af de mest udbredte datalagre er .csv-filformaterne (kommaseparerede værdier). R indlæser en række biblioteker under opstarten, inklusive utils-pakken. Denne pakke er praktisk til at åbne csv-filer kombineret med funktionen reading.csv(). Her er syntaksen for read.csv
read.csv(file, header = TRUE, sep = ",")
Argument:
- fil: PATH hvor filen er gemt
- header: Bekræft, om filen har en header eller ej, som standard er headeren sat til TRUE
- september: symbolet, der bruges til at opdele variablen. Som standard er `,`.
Vi læser datafilnavnet mtcats. Csv-filen er gemt online. Hvis din .csv-fil er gemt lokalt, kan du erstatte PATH inde i kodestykket. Glem ikke at pakke den ind i ' '. PATH skal være en strengværdi.
For mac-brugere er stien til downloadmappen:
"/Users/USERNAME/Downloads/FILENAME.csv"
For Windows-brugere:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Bemærk, at vi altid skal angive filtypenavnet.
- . CSV
- . Xlsx
- . Txt
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
Produktion
## [1] 12
class(df$X)
Produktion
## [1] "factor"
R returnerer som standard tegnværdier som faktor. Vi kan slå denne indstilling fra ved at tilføje 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)
Produktion
## [1] "character"
Klassen for variablen X er nu et tegn.
Læs Excel-filer
Excel filer er meget populære blandt dataanalytikere. Regneark er nemme at arbejde med og fleksible. R er udstyret med et bibliotek readxl til at importere Excel-regneark.
Brug denne kode
require(readxl)
for at kontrollere, om readxl er installeret på din maskine. Hvis du installerer r med r-conda-essential, er biblioteket allerede installeret. Du skal se i kommandovinduet:
Produktion
Loading required package: readxl.
Hvis pakken ikke afsluttes, kan du installere den med conda'en bibliotek eller i terminalen, brug conda install -c mittner r-readxl.
Brug følgende kommando til at indlæse biblioteket for at importere excel-filer.
library(readxl)
readxl_example()
Vi bruger eksemplerne inkluderet i pakken readxl under denne vejledning.
Brug koden
readxl_example()
for at se alle tilgængelige regneark i biblioteket.
For at kontrollere placeringen af regnearket med navnet clippy.xls, enkel brug
readxl_example("geometry.xls")
Hvis du installerer R med conda, er regnearkene placeret i Anaconda3/lib/R/library/readxl/extdata/filename.xls
read_excel()
Funktionen read_excel() er til stor nytte, når det kommer til at åbne 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 tælle antallet af kolonner i det første ark.
# 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)
Produktion
## [1] 5
excel_sheets()
Filen datasets.xlsx er sammensat af 4 ark. Vi kan finde ud af, hvilke ark der er tilgængelige i projektmappen ved at bruge excel_sheets()-funktionen
example <- readxl_example("datasets.xlsx") excel_sheets(example)
Produktion
[1] "iris" "mtcars" "chickwts" "quakes"
Hvis et regneark indeholder mange ark, er det nemt at vælge et bestemt ark ved at bruge arkargumenterne. Vi kan angive navnet på arket eller arkindekset. Vi kan kontrollere, om begge funktioner returnerer det samme output med identisk().
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
Produktion
## [1] TRUE
Vi kan styre hvilke celler der skal læses på 2 måder
- Brug n_max argument til at returnere n rækker
- Brug interval-argument kombineret med celle_rækker eller cellekolonner
For eksempel sætter vi n_max lig med 5 for at importere de første fem rækker.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Hvis vi ændrer col_names til FALSE, opretter R automatisk overskrifterne.
# 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 oprettede R fem nye variable ved navn X__1, X__2, X__3, X__4 og X__5
Vi kan også bruge argumentområdet til at vælge rækker og kolonner i regnearket. I koden nedenfor bruger vi excel-stilen til at vælge området A1 til B5.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
Produktion
## [1] 4 2
Vi kan se, at eksempel_1 returnerer 4 rækker med 2 kolonner. Datasættet har overskrift, at årsagen til dimensionen er 4×2.
I det andet eksempel bruger vi funktionen cell_rows() som styrer rækken af rækker, der skal returneres. Hvis vi vil importere rækkerne 1 til 5, kan vi indstille celle_rows(1:5). Bemærk, at celle_rækker(1:5) returnerer det samme output som cellerækker(5:1).
# Read rows 1 to 5 example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE) dim(example_2)
Produktion
## [1] 4 5
Eksempel_2 er imidlertid en 4×5 matrix. Irisdatasættet har 5 kolonner med overskrift. Vi returnerer de første fire rækker med overskrift for alle kolonner
Hvis vi ønsker at importere rækker, som ikke begynder i den første række, skal vi inkludere col_names = FALSE. Hvis vi bruger range = cell_rows(2:5), bliver det tydeligt, at vores dataramme ikke længere har header.
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)
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)
Produktion
## [1] 150 2
Bemærk: range = cell_cols(“A:B”), returnerer output fra alle celler med ikke-nul værdi. Datasættet indeholder 150 rækker, derfor returnerer read_excel() rækker op til 150. Dette verificeres med dim()-funktionen.
read_excel() returnerer NA, når et symbol uden numerisk værdi vises i cellen. Vi kan tælle antallet af manglende værdier med kombinationen af to funktioner
- sum
- er.na
Her er koden
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Produktion
## [1] 50
Vi mangler 50 værdier, som er de rækker, der tilhører setosa-arten.
Importer data fra anden statistisk software
Vi importerer forskellige filformater med himlens pakke. Denne pakke understøtter SAS, STATA og SPSS-software. Vi kan bruge følgende funktion til at åbne forskellige typer datasæt, i henhold til filtypenavnet:
- SAS: read_sas()
- STATA: read_dta() (eller read_stata(), som er identiske)
- SPSS: read_sav() eller read_por(). Vi skal tjekke forlængelsen
Der kræves kun ét argument i disse funktioner. Vi skal kende STIEN, hvor filen er gemt. Det er det, vi er klar til at åbne alle filerne fra SAS, STATA og SPSS. Disse tre funktioner accepterer også en URL.
library(haven)
haven kommer med conda r-essentiel ellers gå til link eller i terminalen conda installer -c conda-forge r-haven
Læs sas
Til vores eksempel skal vi bruge adgangsdatasættet fra IDRE.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
Produktion
## # 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
Læs STATA
Til STATA-datafiler kan du bruge read_dta(). Vi bruger nøjagtig det samme datasæt, men gemmer i .dta-filen.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
Produktion
## # 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
Læs SPSS
Vi bruger read_sav()-funktionen til at åbne en SPSS-fil. Filtypenavnet ".sav"
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
Produktion
## # 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
Bedste praksis for dataimport
Når vi ønsker at importere data til R, er det nyttigt at implementere følgende tjekliste. Det vil gøre det nemt at importere data korrekt til R:
- Det typiske format for et regneark er at bruge de første rækker som overskrift (normalt variabelnavn).
- Undgå at navngive et datasæt med tomme mellemrum; det kan føre til fortolkning som en separat variabel. Alternativt kan du foretrække at bruge '_' eller '-.'
- Korte navne foretrækkes
- Inkluder ikke symbol i navnet: dvs.: exchange_rate_$_€ er ikke korrekt. Foretrækker at navngive det: exchange_rate_dollar_euro
- Brug NA til manglende værdier ellers; vi skal rense formatet senere.
Resumé
Følgende tabel opsummerer den funktion, der skal bruges til at importere forskellige filtyper i R. Den første kolonne angiver det bibliotek, der er relateret til funktionen. Den sidste kolonne henviser til standardargumentet.
Bibliotek | Objektiv | Funktion | Standardargumenter |
---|---|---|---|
utils | Læs CSV-fil | læs.csv() | fil, header =, TRUE, sep = "," |
læsxl | Læs EXCEL-fil | read_excel() | sti, interval = NULL, col_names = TRUE |
tilflugtssted | Læs SAS-fil | read_sas() | sti |
tilflugtssted | Læs STATA-filen | read_stata() | sti |
tilflugtssted | Læs SPSS fyld | read_sav() | sti |
Følgende tabel viser de forskellige måder at importere en markering med read_excel()-funktionen.
Funktion | Objektiv | argumenter |
---|---|---|
read_excel() | Læs n antal rækker | n_max = 10 |
Vælg rækker og kolonner som i excel | område = "A1:D10" | |
Vælg rækker med indekser | range= cell_rows(1:3) | |
Vælg kolonner med bogstaver | range = cell_cols(“A:C”) |