Adatok importálása R-ben: CSV, Excel, SPSS, Stata, SAS fájlok olvasása
⚡ Okos összefoglaló
Az R-ben az Adatok importálása című rész a CSV-fájlok read.csv() függvénnyel, Excel-munkafüzetek readxl függvénnyel, valamint SAS, STATA vagy SPSS fájlok haven függvénnyel történő olvasását tárgyalja. Ez az útmutató azt is bemutatja, hogyan lehet pontosan kijelölni a munkalapokat, sorokat és cellatartományokat importáláskor.

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.
CSV-fájlok olvasása
A legszélesebb körben használt adatformátum a .csv, vesszővel elválasztott értékek. Az R indításkor egy könyvtártömböt tölt be, beleértve az utils csomagot is. Ez a csomag biztosítja a read.csv() függvényt, a CSV fájlok megnyitásának szabványos módját. A szintaxis a következő:
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)
output:
## [1] 12
class(df$X)
output:
## [1] "factor"
Az R 4.0.0 előtti verziókban a read.csv() minden karakteres oszlopot faktorrá alakított, ezért a class(df$X) a fentiekben „faktor” értéket ad vissza. Kikapcsolhatod a stringsAsFactors = FALSE beállítással.
⚠️ Verzió megjegyzés: óta R 4.0.0 Az alapértelmezett beállítás a stringsAsFactors = FALSE, így a karakteres oszlopok karakterek maradnak, és az első példa most „karakter” értéket ad vissza egy modern telepítésen. Az argumentum explicit átadása, az alábbiak szerint, minden verzión ugyanazt az eredményt adja, és ez a legbiztonságosabb szokás.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
output:
## [1] "character"
Az X változó osztálya most egy karakter.
read.csv() vs read_csv(): Melyiket érdemes használni?
A read.csv() függvény az R alapcsomagot tartalmazza, és nem igényel csomagot. A readr csomag hozzáadja a read_csv() függvényt, amely gyorsabb és kevesebb döntést hoz a felhasználó nevében.
| Kritériumai | read.csv() (segédprogramok) | read_csv() (olvasóprogram) |
|---|---|---|
| Csomag szükséges | Egyik sem | olvasó |
| Sebesség nagy fájlokon | lassabb | Többször gyorsabb |
| Visszatér | adat.keret | tibble |
| Oszlopok nevei | Szóközök pontokká konvertálva | Pontosan úgy tárolva, ahogy írva van |
| Típusfelismerés | Csendes | Oszlopspecifikációban jelentve |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
Kis fájlok és olyan szkriptek esetén használd a read.csv() függvényt, amelyeknek extra csomagok nélkül kell futniuk. Használd a read_csv() függvényt, ha a fájl nagy, vagy ha fontos a pontos oszlopnevek megőrzése.
Excel-fájlok olvasása
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:
output:
Loading required package: readxl.
Ha a csomag nincs telepítve, akkor a conda segítségével telepítheti. 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.
Egy adott táblázat helyének ellenőrzéséhez adja meg a nevét:
readxl_example("geometry.xls")
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 megnyitja mind az .xls, mind az .xlsx kiterjesztésű fájlokat, és automatikusan kiválasztja a megfelelő elemzőt.
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)
output:
## [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)
output:
[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)
output:
## [1] TRUE
Kétféleképpen szabályozhatjuk, hogy mely cellákat olvassuk
- Használja az n_max argumentumot n sor visszaadásához
- 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)
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 a readxl öt helyőrző nevet generált. A régebbi verziók X__1-től X__5-ig terjedő értékeket, míg a jelenlegi verziók …1-től …5-ig terjedő értékeket generáltak.
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)
output:
## [1] 4 2
Az example_1 függvény 4 sort és 2 oszlopot ad vissza. Az A1:B5 tartomány öt táblázatsort fed le, de az első sort fejlécként használja fel a függvény, ezért a méret 4 x 2.
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)
output:
## [1] 4 5
A példa_2 ezzel szemben 4 x 5 méretű. A cell_rows(1:5) ismét az első sort kezeli fejlécként, így mind az öt oszlopban négy adatsor kerül visszaadásra.
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)
Az oszlopokat betű szerint is kijelölheti, pontosan úgy, mint az Excelben:
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
output:
## [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.
Az na argumentum megmondja a read_excel() függvénynek, hogy mely értékeket tekintse hiányzónak. Számolja meg őket a sum() és az is.na() függvénnyel:
- összeg
- is.na
Itt a kód
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
output:
## [1] 50
50 értékünk hiányzik, ezek a setosa fajokhoz tartozó sorok.
Adatok importálása más statisztikai szoftverekből
Más statisztikai csomagokból származó fájlok importálása a következővel történik: kikötő csomag, amely támogatja SAS, STATA és SPSS. A következő függvényt használhatjuk különböző típusú adathalmazok megnyitására, a fájl kiterjesztése szerint:
- 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
Ezen függvények mindegyikének csak egyetlen argumentuma van, a fájl tárolási útvonala, és mindegyik elfogad egy URL olyan könnyen, mint egy helyi ösvényen.
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
SAS fájlok olvasása
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)
output:
## # 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
STATA fájlok olvasása
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)
output:
## # 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
SPSS fájlok olvasása
A read_sav() függvény megnyit egy SPSS fájlt, amely .sav kiterjesztésű.
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
output:
## # 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
Adatimportálás ajánlott gyakorlatai
Az alábbi ellenőrzőlista átfutása importálás előtt a legtöbb utólagos takarítási munkát megspórolja:
- A táblázatok tipikus formátuma az első sorok használata fejlécként (általában a változók neve).
- Kerüld az üres szóközöket a fájl- vagy oszlopnevekben, mert ezek oszlopelválasztóként olvashatók. Használj helyettük aláhúzásjelet.
- A rövid neveket részesítik előnyben
- Ne használj szimbólumokat a névben. Írd be az árfolyam_dollár_euró kifejezést az árfolyam_$_€ helyett.
- A hiányzó értékeket NA-ként kódolja a szóközök, kötőjelek vagy jelzőszámok (például -99) helyett, amelyeket egyébként utólag törölni kellene.
Adatok importálása R-ben: Függvényreferencia
Az alábbi táblázat felsorolja az egyes fájltípusok importfüggvényeit, az azokat szolgáltató könyvtárat és az alapértelmezett argumentumokat:
| könyvtár | Objektív | Funkció | Alapértelmezett argumentumok |
|---|---|---|---|
| hasznos | Olvassa el a CSV-fájlt | read.csv() | fájl, fejléc = IGAZ, szep = “,” |
| 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_dta() / read_stata() | ösvény |
| kikötő | SPSS fájl olvasása | read_sav() | ösvény |
A második táblázat a read_excel() függvénnyel történő kijelölés importálásának módjait mutatja be:
| 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") |







