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.

Læsxl_Eksempel

For at kontrollere placeringen af ​​regnearket med navnet clippy.xls, enkel brug

readxl_example("geometry.xls")

Læsxl_Eksempel

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

  1. Brug n_max argument til at returnere n rækker
  2. 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)

Excel_Sheets

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

Excel_Sheets

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.

Excel_Sheets

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

Excel_Sheets

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)

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)

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

  1. sum
  2. 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”)