Import dat v R: Čtení souborů CSV, Excel, SPSS, Stata, SAS
⚡ Chytré shrnutí
Import dat v R zahrnuje čtení souborů CSV pomocí read.csv(), sešitů aplikace Excel pomocí readxl a souborů SAS, STATA nebo SPSS pomocí haven. Tento návod také ukazuje, jak přesně vybrat listy, řádky a oblasti buněk při importu.

Data mohou existovat v různých formátech. Pro každý formát R má specifickou funkci a argument. Tento tutoriál vysvětluje, jak importovat data do R.
Čtení souborů CSV
Nejrozšířenějším datovým formátem je .csv, hodnoty oddělené čárkami. R při spouštění načte pole knihoven, včetně balíčku utils. Tento balíček poskytuje read.csv(), standardní způsob, jak otevřít soubor CSV. Syntaxe je následující:
read.csv(file, header = TRUE, sep = ",")
Argument:
- soubor: PATH, kde je soubor uložen
- hlavička: potvrzení, zda má soubor záhlaví nebo ne, ve výchozím nastavení je záhlaví nastaveno na hodnotu TRUE
- září: symbol používaný k rozdělení proměnné. Ve výchozím nastavení `,`.
Přečteme název datového souboru mtcats. Soubor csv je uložen online. Pokud je váš soubor .csv uložen místně, můžete nahradit PATH uvnitř fragmentu kódu. Nezapomeňte jej zabalit dovnitř „ “. PATH musí být řetězcová hodnota.
Pro uživatele systému Mac je cesta ke složce pro stahování:
"/Users/USERNAME/Downloads/FILENAME.csv"
Pro uživatele systému Windows:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Všimněte si, že bychom měli vždy zadat příponu názvu souboru.
- . CSV
- . XLSX
- . Txt
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
Výstup:
## [1] 12
class(df$X)
Výstup:
## [1] "factor"
Ve verzích R před verzí 4.0.0 převáděla metoda read.csv() každý sloupec se znaky na faktor, a proto class(df$X) vrací výše uvedený „faktor“. Tuto funkci bylo možné vypnout pomocí stringsAsFactors = FALSE.
⚠️ Poznámka k verzi: od R 4.0.0 Výchozí hodnota je stringsAsFactors = FALSE, takže sloupce se znaky zůstanou znaky a první příklad nyní v moderní instalaci vrací „znak“. Explicitní předání argumentu, jak je uvedeno níže, dává stejný výsledek ve všech verzích a je nejbezpečnějším zvykem.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
Výstup:
## [1] "character"
Třída pro proměnnou X je nyní znak.
read.csv() vs. read_csv(): Který byste měli použít?
Funkce read.csv() je dodávána se základním R a nepotřebuje žádný balíček. Balíček readr přidává funkci read_csv(), která je rychlejší a provádí méně rozhodnutí za vás.
| Kritéria | read.csv() (utility) | read_csv() (čtečka) |
|---|---|---|
| Potřebný balíček | Nevyplněno | čtenáře |
| Rychlost při práci s velkými soubory | Pomaleji | Několikrát rychlejší |
| Vrácení zboží | data.frame | pochutnat si |
| Názvy sloupců | Mezery převedeny na tečky | Přesně tak, jak je napsáno |
| Detekce typu | Tichý | Uvedeno ve specifikaci sloupce |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
Pro malé soubory a skripty, které musí běžet bez dalších balíčků, použijte funkci read.csv(). Pokud je soubor velký nebo když je důležité zachovat přesné názvy sloupců, použijte funkci read_csv().
Čtení souborů Excelu
vynikat soubory jsou mezi datovými analytiky velmi oblíbené. S tabulkami se snadno pracuje a jsou flexibilní. R je vybaven knihovnou readxl pro import tabulky Excel.
Použijte tento kód
require(readxl)
zkontrolujte, zda je ve vašem počítači nainstalován readxl. Pokud nainstalujete r pomocí r-conda-essential, knihovna je již nainstalována. V příkazovém okně byste měli vidět:
Výstup:
Loading required package: readxl.
Pokud balíček není nainstalován, můžete jej nainstalovat pomocí conda knihovna nebo v terminálu použijte conda install -c mittner r-readxl.
Pomocí následujícího příkazu načtěte knihovnu pro import souborů aplikace Excel.
library(readxl)
readxl_example()
V tomto tutoriálu používáme příklady obsažené v balíčku readxl.
Použijte kód
readxl_example()
zobrazíte všechny dostupné tabulky v knihovně.
Chcete-li zkontrolovat umístění konkrétní tabulky, zadejte její název:
readxl_example("geometry.xls")
Pokud nainstalujete R s conda, tabulky jsou umístěny v Anaconda3/lib/R/library/readxl/extdata/filename.xls
read_excel()
Funkce read_excel() otevírá soubory s příponami .xls i .xlsx a automaticky vybírá správný parser.
Syntaxe je:
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
Můžeme importovat tabulky z knihovny readxl a spočítat počet sloupců v prvním listu.
# 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)
Výstup:
## [1] 5
excel_sheets()
Soubor datasets.xlsx se skládá ze 4 listů. Které listy jsou v sešitu k dispozici, můžeme zjistit pomocí funkce excel_sheets().
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
Výstup:
[1] "iris" "mtcars" "chickwts" "quakes"
Pokud list obsahuje mnoho listů, je snadné vybrat konkrétní list pomocí argumentů listu. Můžeme zadat název listu nebo index listu. Můžeme ověřit, zda obě funkce vrací stejný výstup s identickou().
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
Výstup:
## [1] TRUE
Můžeme ovládat, které buňky číst, dvěma způsoby
- Použijte argument n_max k vrácení n řádků
- Použijte argument rozsahu v kombinaci s buňkami řádky nebo sloupce buněk
Například nastavíme n_max rovno 5, abychom importovali prvních pět řádků.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Pokud změníme col_names na FALSE, R vytvoří záhlaví automaticky.
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
V datovém rámci iris_no_header příkaz readxl vygeneroval pět zástupných názvů. Starší verze generovaly názvy X__1 až X__5, zatímco aktuální verze generovaly názvy …1 až …5.
Rozsah argumentů můžeme také použít k výběru řádků a sloupců v tabulce. V níže uvedeném kódu používáme excelový styl k výběru rozsahu A1 až B5.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
Výstup:
## [1] 4 2
Funkce example_1 vrací 4 řádky a 2 sloupce. Rozsah A1:B5 pokrývá pět řádků tabulky, ale první z nich je použit jako záhlaví, proto je rozměr 4 x 2.
Ve druhém příkladu používáme funkci cell_rows(), která řídí rozsah řádků, které se mají vrátit. Pokud chceme importovat řádky 1 až 5, můžeme nastavit cell_rows(1:5). Všimněte si, že cell_rows(1:5) vrací stejný výstup jako 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)
Výstup:
## [1] 4 5
example_2 má naopak rozměry 4 x 5. Funkce cell_rows(1:5) opět považuje první řádek za záhlaví, takže vrátí čtyři datové řádky ve všech pěti sloupcích.
V případě, že chceme importovat řádky, které nezačínají na prvním řádku, musíme zahrnout col_names = FALSE. Pokud použijeme range = cell_rows(2:5), je zřejmé, že náš datový rámec již nemá záhlaví.
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)
Sloupce můžete také vybírat podle písmene, přesně jako v Excelu:
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
Výstup:
## [1] 150 2
Poznámka: range = cell_cols(“A:B”), vrátí výstup všech buněk s nenulovou hodnotou. Datová sada obsahuje 150 řádků, proto read_excel() vrací řádky až 150. To je ověřeno funkcí dim().
Argument na říká funkci read_excel(), které hodnoty má považovat za chybějící. Spočítá je pomocí sum() a is.na():
- součet
- je.na
Zde je kód
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Výstup:
## [1] 50
Chybí nám 50 hodnot, což jsou řádky patřící druhu setosa.
Import dat z jiného statistického softwaru
Soubory z jiných statistických balíčků se importují pomocí útočiště balíček, který podporuje SAS, STATA a SPSS. Následující funkci můžeme použít k otevření různých typů datových sad v závislosti na příponě souboru:
- SAS: read_sas()
- STATA: read_dta() (nebo read_stata(), které jsou identické)
- SPSS: read_sav() nebo read_por(). Musíme zkontrolovat rozšíření
Každá z těchto funkcí potřebuje pouze jeden argument, cestu, kde je soubor uložen, a každá přijímá URL stejně snadno jako místní cesta.
library(haven)
Haven přichází s conda r-essential jinak jděte do https://trials.autocruitment.com nebo v terminálu conda install -c conda-forge r-haven
Čtení souborů SAS
Pro náš příklad použijeme vstupní datovou sadu z IDRE.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
Výstup:
## # 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
Čtení souborů STATA
Pro datové soubory STATA můžete použít read_dta(). Používáme přesně stejnou datovou sadu, ale ukládáme ji do souboru .dta.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
Výstup:
## # 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
Čtení souborů SPSS
Funkce read_sav() otevírá soubor SPSS s příponou .sav.
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
Výstup:
## # 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
Nejlepší postupy pro import dat
Procházení níže uvedeného kontrolního seznamu před importem ušetří většinu práce s následným čištěním:
- Typickým formátem tabulky je použití prvních řádků jako záhlaví (obvykle název proměnné).
- V názvu souboru nebo sloupce se vyhněte mezerám, protože je lze číst jako oddělovač sloupců. Použijte místo nich podtržítko.
- Preferují se krátká jména
- Nepoužívejte v názvu žádné symboly. Pište směnný_kurz_dolar_euro místo směnný_kurz_$_€.
- Chybějící hodnoty kódujte jako NA, nikoli jako mezery, pomlčky nebo kontrolní čísla, například -99, která je jinak nutné dodatečně vyčistit.
Import dat v R: Referenční příručka funkcí
V následující tabulce jsou uvedeny funkce importu pro každý typ souboru, knihovna, která je poskytuje, a její výchozí argumenty:
| Knihovna | Objektivní | funkce | Výchozí argumenty |
|---|---|---|---|
| utils | Přečtěte si soubor CSV | read.csv() | soubor, záhlaví = TRUE, sep = „,“ |
| readxl | Přečtěte si soubor EXCEL | read_excel() | cesta, rozsah = NULL, názvy sloupců = TRUE |
| útočiště | Přečtěte si soubor SAS | read_sas() | cesta |
| útočiště | Přečtěte si soubor STATA | čtení_dta() / čtení_stata() | cesta |
| útočiště | Číst soubor SPSS | read_sav() | cesta |
Druhá tabulka ukazuje způsoby importu výběru pomocí read_excel():
| funkce | Objektivní | Argumenty |
|---|---|---|
| read_excel() | Přečtěte n počet řádků | n_max = 10 |
| Vyberte řádky a sloupce jako v Excelu | rozsah = "A1:D10" | |
| Vyberte řádky s indexy | range= cell_rows(1:3) | |
| Vyberte sloupce s písmeny | rozsah = cell_cols(“A:C”) |







