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.

  • 📄 CSV importálás: A read.csv(file, header = TRUE, sep = “,”) függvény betölt egy vesszővel elválasztott fájlt egy helyi elérési útról vagy egy URL.
  • ⚠️ Verzióváltás: Az R 4.0.0 óta a karakteres oszlopok karakterek maradnak, mivel a stringsAsFactors mostantól alapértelmezés szerint FALSE értéket használ.
  • 📗 Excel importálás: A readxl-ből a read_excel() függvény mind az .xls, mind az .xlsx fájlokat kezeli, az excel_sheets() pedig minden munkalapot elsőként listáz.
  • 🎯 Pontos kiválasztás: Az n_max a sorokat korlátozza, a range Excel-jelölést használ, a cell_rows() vagy cell_cols() pedig indexeket és betűket fogad el.
  • 🔄 Egyéb szoftverek: A haven biztosítja a read_sas(), read_dta() és read_sav() függvényeket, amelyek mindegyike csak egy elérési utat vagy URL.
  • 🧹 Tiszta bemenet: Importálás előtt kódolja a hiányzó értékeket NA-ként, és kerülje a szóközöket vagy szimbólumokat az oszlopnevekben.

Adatok importálása R-ben

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.

Readxl_Example

Egy adott táblázat helyének ellenőrzéséhez adja meg a nevét:

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

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

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)

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.

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)

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.

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

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:

  1. összeg
  2. 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")

GYIK

Az R 4.0.0 verzióban a stringsAsFactors alapértelmezett értéke TRUE-ról FALSE-ra változott. A karakteres oszlopok mostantól karakterek maradnak. Adja át explicit módon az argumentumot, ha a szkriptnek azonosan kell viselkednie a régebbi R verziókon.

Cseréljük ki a URL a teljes helyi elérési utat idézőjelek között, például „C:/Users/name/data.csv”. Használjon perjelet vagy dupla fordított perjelet a Windows, és erősítse meg a munkakönyvtárat a getwd() függvénnyel.

A readxl a .xls és .xlsx fájlokat tiszta R-ben olvassa, anélkül, hogy Java függőség. Csak a régebbi xlsx csomagnak van szüksége rá. Java r-en keresztülJava, ezért a readxl az ajánlott választás.

Az importálás során bekövetkező csendes típusváltozások gyakori forrásai a reprodukálhatatlan AI-eredményeknek. Az oszloptípusok explicit deklarálása, ahogyan a read_csv() függvény jelenti őket, biztosítja, hogy a betanító adatkészlet minden alkalommal azonosan töltődik be.

Igen. A mesterséges intelligencia asszisztensek képesek diagnosztizálni a hibás elválasztókat, a kódolási problémákat és a fejlécek helytelen beolvasását egy hibaüzenetben. Az elemzés folytatása előtt mindig erősítse meg az eredményt az str() vagy a glimpse() függvénnyel.

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