Adatok importálása R-ben: CSV, Excel, SPSS, Stata, SAS fájlok olvasása

Az adatok különféle formátumokban létezhetnek. Minden formátumhoz R meghatározott funkciója és argumentuma van. Ez az oktatóanyag elmagyarázza, hogyan importálhat adatokat R-be.

Olvassa el a CSV-t

Az egyik legelterjedtebb adattár a .csv (vesszővel elválasztott értékek) fájlformátum. Az R egy sor könyvtárat tölt be az indítás során, beleértve a utils csomagot is. Ez a csomag kényelmes csv fájlok megnyitásához a read.csv() függvénnyel kombinálva. Íme a read.csv szintaxisa

read.csv(file, header = TRUE, sep = ",")

Érv:

  • filé: PATH, ahol a fájl tárolva van
  • header: annak megerősítése, hogy a fájlnak van-e fejléce vagy sem, alapértelmezés szerint a fejléc TRUE értékre van állítva
  • szeptember: a változó felosztására használt szimbólum. Alapértelmezés szerint `,`.

Az mtcats adatfájl nevét fogjuk beolvasni. A csv fájl online tárolása. Ha a .csv fájl helyben van tárolva, lecserélheti a kódrészleten belüli PATH-t. Ne felejtse el becsomagolni a ' ' belsejébe. A PATH-nak karakterlánc-értéknek kell lennie.

Mac felhasználó esetén a letöltési mappa elérési útja a következő:

 "/Users/USERNAME/Downloads/FILENAME.csv"

Windows felhasználóknak:

"C:\Users\USERNAME\Downloads\FILENAME.csv"

Vegye figyelembe, hogy mindig meg kell adnunk a fájlnév kiterjesztését.

  • . Csv
  • . Xlsx
  • . Txt
  • ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'                
df <- read.csv(PATH, header =  TRUE, sep = ',')
length(df)

teljesítmény

## [1] 12
class(df$X)

teljesítmény

## [1] "factor"

Az R alapértelmezés szerint a karakterértékeket faktorként adja vissza. Ezt a beállítást a stringsAsFactors = FALSE hozzáadásával kapcsolhatjuk ki.

PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE)
class(df$X)

teljesítmény

## [1] "character"

Az X változó osztálya most egy karakter.

Olvasson Excel fájlokat

Excel fájlok nagyon népszerűek az adatelemzők körében. A táblázatok könnyen kezelhetők és rugalmasak. Az R egy readxl könyvtárral van felszerelve az Excel táblázat importálásához.

Használja ezt a kódot

require(readxl)

hogy ellenőrizze, hogy a readxl telepítve van-e a gépen. Ha az r-t az r-conda-essential elemmel telepíti, a könyvtár már telepítve van. A parancsablakban látnia kell:

teljesítmény

Loading required package: readxl.

Ha a csomag nem lép ki, telepítheti a condával könyvtár vagy a terminálban használja a conda install -c mittner r-readxl parancsot.

A következő paranccsal töltse be a könyvtárat az Excel fájlok importálásához.

library(readxl)

readxl_example()

Ebben az oktatóanyagban a readxl csomagban található példákat használjuk.

Kóddal

readxl_example()

a könyvtár összes elérhető táblázatának megtekintéséhez.

Readxl_Example

A clippy.xls nevű táblázat helyének ellenőrzéséhez egyszerűen használja

readxl_example("geometry.xls")

Readxl_Example

Ha az R-t conda-val telepíti, a táblázatok az Anaconda3/lib/R/library/readxl/extdata/filename.xls fájlban találhatók.

read_excel()

A read_excel() függvény nagyon hasznos az xls és az xlsx kiterjesztések megnyitásakor.

A szintaxis:

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

A readxl könyvtárból importálhatjuk a táblázatokat, és megszámolhatjuk az első lapon lévő oszlopok számát.

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

teljesítmény

## [1] 5

excel_sheets()

A datasets.xlsx fájl 4 lapból áll. Az excel_sheets() függvény segítségével megtudhatjuk, hogy mely lapok érhetők el a munkafüzetben

example <- readxl_example("datasets.xlsx")

excel_sheets(example)

teljesítmény

[1] "iris"     "mtcars"   "chickwts" "quakes"

Ha egy munkalap sok lapot tartalmaz, könnyen kiválasztható egy adott munkalap a lap argumentumaival. Megadhatjuk a lap nevét vagy a lap indexét. Ellenőrizhetjük, hogy mindkét függvény ugyanazt a kimenetet adja-e vissza az identical()-al.

example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)

teljesítmény

## [1] TRUE

Kétféleképpen szabályozhatjuk, hogy mely cellákat olvassuk

  1. Használja az n_max argumentumot n sor visszaadásához
  2. Használja a tartomány argumentumot a cell_rows vagy cell_cols paraméterekkel kombinálva

Például az n_max értéket 5-tel állítjuk be az első öt sor importálásához.

# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)

Excel_Sheets

Ha az oszlopneveket FALSE-ra változtatjuk, az R automatikusan létrehozza a fejléceket.

# Read the first five row: without header
iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)

iris_no_header

Az iris_no_header adatkeretben R öt új változót hozott létre X__1, X__2, X__3, X__4 és X__5 néven.

Excel_Sheets

Az argumentumtartományt használhatjuk sorok és oszlopok kiválasztására is a táblázatban. Az alábbi kódban az excel stílust használjuk az A1-től B5-ig terjedő tartomány kiválasztásához.

# Read rows A1 to B5
example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE)
dim(example_1)

teljesítmény

## [1] 4 2

Láthatjuk, hogy a példa_1 4 sort ad vissza 2 oszloppal. Az adatkészletnek van fejléce, ami miatt a dimenzió 4×2.

Excel_Sheets

A második példában a cell_rows() függvényt használjuk, amely szabályozza a visszaadandó sorok tartományát. Ha importálni szeretnénk az 1-től 5-ig terjedő sorokat, beállíthatjuk a cell_rows(1:5) értéket. Vegye figyelembe, hogy a cell_rows(1:5) ugyanazt a kimenetet adja vissza, mint a cell_rows(5:1).

# Read rows 1 to 5
example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE)			
dim(example_2)

teljesítmény

## [1] 4 5

A példa_2 azonban egy 4×5-ös mátrix. Az írisz adatkészlet 5 oszlopból áll fejléccel. Az első négy sort az összes oszlop fejlécével adjuk vissza

Excel_Sheets

Abban az esetben, ha olyan sorokat szeretnénk importálni, amelyek nem az első sorban kezdődnek, akkor a következőt kell megadnunk: col_names = FALSE. Ha a range = cell_rows(2:5) értéket használjuk, akkor nyilvánvalóvá válik, hogy adatkeretünknek már nincs fejléce.

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)

teljesítmény

## [1] 150   2

Megjegyzés: tartomány = cell_cols(“A:B”), visszaadja az összes nem nulla értékű cellát. Az adatkészlet 150 sort tartalmaz, ezért a read_excel() legfeljebb 150 sorokat ad vissza. Ezt a dim() függvénnyel ellenőrizzük.

A read_excel() NA-t ad vissza, ha számérték nélküli szimbólum jelenik meg a cellában. A hiányzó értékek számát két függvény kombinációjával tudjuk megszámolni

  1. összeg
  2. is.na

Itt a kód

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

teljesítmény

## [1] 50

50 értékünk hiányzik, ezek a setosa fajokhoz tartozó sorok.

Adatok importálása más statisztikai szoftverekből

Különféle fájlformátumokat fogunk importálni a mennyország csomaggal. Ez a csomag támogatása SAS, STATA és SPSS szoftverek. A következő függvényt használhatjuk különböző típusú adatkészletek megnyitására, a fájl kiterjesztésének megfelelően:

  • SAS: read_sas()
  • STATA: read_dta() (vagy read_stata(), amelyek azonosak)
  • SPSS: read_sav() vagy read_por(). Ellenőriznünk kell a bővítményt

Ezeken a függvényeken belül csak egy argumentum szükséges. Tudnunk kell a PATH-t, ahol a fájl tárolva van. Ennyi, készen állunk a SAS, a STATA és az SPSS összes fájljának megnyitására. Ez a három függvény egy URL-t is elfogad.

library(haven)

haven jön conda r-essential különben megy a link vagy a conda terminálba telepítse a -c conda-forge r-haven

Olvasd sas

Példánkban az IDRE felvételi adatkészletét fogjuk használni.

PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true'
df <- read_sas(PATH_sas)
head(df)

teljesítmény

## # 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

Olvassa el a STATA-t

A STATA adatfájlokhoz használhatja a read_dta() parancsot. Pontosan ugyanazt az adatkészletet használjuk, de .dta fájlban tároljuk.

PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true'
df <- read_dta(PATH_stata)
head(df)

teljesítmény

## # 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

Olvassa el az SPSS-t

Az SPSS fájl megnyitásához a read_sav() függvényt használjuk. A „.sav” fájl kiterjesztése

PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true'
df <- read_sav(PATH_spss)
head(df)

teljesítmény

## # 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

Az adatimportálás bevált módszerei

Amikor adatokat akarunk importálni R-be, hasznos az alábbi ellenőrzőlista alkalmazása. Ez megkönnyíti az adatok helyes importálását az R-be:

  • A táblázatok tipikus formátuma az első sorok használata fejlécként (általában a változók neve).
  • Kerülje az adatkészletek szóközökkel történő elnevezését; külön változóként való értelmezéshez vezethet. Alternatív megoldásként használjon '_' vagy '-' jelet.
  • A rövid neveket részesítik előnyben
  • Ne használjon szimbólumot a névben: azaz: az árfolyam_$_€ nem helyes. Inkább nevezd el: árfolyam_dollár_euro
  • Ellenkező esetben használjon NA-t a hiányzó értékekhez; később meg kell tisztítanunk a formátumot.

Összegzésként

A következő táblázat összefoglalja a különböző típusú fájlok importálásához használandó függvényt az R-ben. Az első oszlop a függvényhez kapcsolódó könyvtárat tartalmazza. Az utolsó oszlop az alapértelmezett argumentumra vonatkozik.

könyvtár Objektív Funkció Alapértelmezett argumentumok
hasznos Olvassa el a CSV-fájlt read.csv() file, header =,TRUE, sep = ","
readxl Olvassa el az EXCEL fájlt read_excel() elérési út, tartomány = NULL, oszlopnevek = IGAZ
kikötő Olvassa el a SAS fájlt read_sas() ösvény
kikötő Olvassa el a STATA fájlt read_stata() ösvény
kikötő Olvassa el az SPSS-t read_sav() ösvény

A következő táblázat bemutatja a kijelölés importálásának különböző módjait a read_excel() függvénnyel.

Funkció Objektív érvek
read_excel() Olvasson n számú sort n_max = 10
Válassza ki a sorokat és oszlopokat, mint az Excelben tartomány = "A1:D10"
Válassza ki az indexeket tartalmazó sorokat tartomány= cella_sorok(1:3)
Jelölje ki a betűket tartalmazó oszlopokat tartomány = cella_cols("A:C")

Foglald össze ezt a bejegyzést a következőképpen: