Uvoz podataka u R: čitanje CSV, Excel, SPSS, Stata, SAS datoteka
⚡ Pametni sažetak
Uvoz podataka u R obuhvaća čitanje CSV datoteka pomoću read.csv(), Excel radnih knjiga pomoću readxl i SAS, STATA ili SPSS datoteka pomoću haven. Ovaj vodič također pokazuje kako precizno odabrati listove, retke i raspone ćelija prilikom uvoza.

Podaci mogu postojati u različitim formatima. Za svaki format R ima specifičnu funkciju i argument. Ovaj vodič objašnjava kako uvesti podatke u R.
Čitanje CSV datoteka
Najčešće korišteni format podataka je .csv, vrijednosti odvojene zarezom. R učitava niz biblioteka tijekom pokretanja, uključujući paket utils. Taj paket pruža read.csv(), standardni način otvaranja CSV datoteke. Evo sintakse:
read.csv(file, header = TRUE, sep = ",")
Argument:
- file: PATH gdje je datoteka pohranjena
- zaglavlje: potvrdite ima li datoteka zaglavlje ili ne, prema zadanim postavkama zaglavlje je postavljeno na TRUE
- rujna: simbol koji se koristi za dijeljenje varijable. Prema zadanim postavkama, `,`.
Pročitat ćemo naziv podatkovne datoteke mtcats. Csv datoteka pohranjena je na mreži. Ako je vaša .csv datoteka pohranjena lokalno, možete zamijeniti PATH unutar isječka koda. Ne zaboravite ga zamotati unutar " ". PATH mora biti vrijednost niza.
Za korisnike Maca, staza za mapu za preuzimanje je:
"/Users/USERNAME/Downloads/FILENAME.csv"
Za korisnike sustava Windows:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Imajte na umu da uvijek trebamo navesti ekstenziju naziva datoteke.
- . CSV
- . Xlsx
- . TXT
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
Izlaz:
## [1] 12
class(df$X)
Izlaz:
## [1] "factor"
U verzijama R-a prije 4.0.0, read.csv() je pretvarao svaki stupac znakova u faktor, zbog čega class(df$X) vraća "faktor" iznad. Mogli ste ga isključiti pomoću stringsAsFactors = FALSE.
⚠️ Napomena o verziji: od R 4.0.0 Zadana vrijednost je stringsAsFactors = FALSE, pa znakovni stupci ostaju znakovni, a prvi primjer sada vraća "znak" na modernoj instalaciji. Eksplicitno prosljeđivanje argumenta, kao što je prikazano u nastavku, daje isti rezultat na svakoj verziji i najsigurnija je navika.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
Izlaz:
## [1] "character"
Klasa za varijablu X sada je znak.
read.csv() vs. read_csv(): Koji biste trebali koristiti?
read.csv() dolazi s osnovnim R-om i ne treba mu paket. Paket readr dodaje read_csv(), koji je brži i donosi manje odluka umjesto vas.
| Kriteriji | read.csv() (uslužni programi) | čitaj_csv() (čitaj) |
|---|---|---|
| Potreban paket | nijedan | čitač |
| Brzina rada s velikim datotekama | sporiji | Nekoliko puta brže |
| Povratak | okvir_podataka | grickati |
| Nazivi stupaca | Razmaci pretvoreni u točke | Sačuvano točno kako je napisano |
| Detekcija tipa | Nijem | Izvješteno u specifikaciji stupca |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
Koristite read.csv() za male datoteke i skripte koje se moraju pokretati bez dodatnih paketa. Koristite read_csv() kada je datoteka velika ili kada je važno sačuvati točne nazive stupaca.
Čitanje Excel datoteka
nadmašiti datoteke su vrlo popularne među analitičarima podataka. S proračunskim tablicama lako je raditi i fleksibilne su. R je opremljen bibliotekom readxl za uvoz Excel proračunske tablice.
Koristite ovaj kod
require(readxl)
da provjerite je li readxl instaliran na vašem stroju. Ako instalirate r s r-conda-essential, biblioteka je već instalirana. Trebali biste vidjeti u naredbenom prozoru:
Izlaz:
Loading required package: readxl.
Ako paket nije instaliran, možete ga instalirati pomoću conda-e. knjižnica ili u terminalu upotrijebite conda install -c mittner r-readxl.
Koristite sljedeću naredbu za učitavanje biblioteke za uvoz excel datoteka.
library(readxl)
readxl_example()
Tijekom ovog vodiča koristimo se primjerima uključenim u paket readxl.
Upotrijebite kod
readxl_example()
da vidite sve dostupne proračunske tablice u knjižnici.
Za provjeru lokacije određene proračunske tablice, unesite njezino ime:
readxl_example("geometry.xls")
Ako instalirate R s condom, proračunske tablice se nalaze u Anaconda3/lib/R/library/readxl/extdata/filename.xls
read_excel()
read_excel() otvara i .xls i .xlsx ekstenzije i automatski odabire pravi parser.
Sintaksa 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
Možemo uvesti proračunske tablice iz biblioteke readxl i prebrojati broj stupaca u prvom 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)
Izlaz:
## [1] 5
excel_sheets()
Datoteka datasets.xlsx sastoji se od 4 lista. Pomoću funkcije excel_sheets() možemo saznati koji su listovi dostupni u radnoj knjizi
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
Izlaz:
[1] "iris" "mtcars" "chickwts" "quakes"
Ako radni list uključuje mnogo listova, lako je odabrati određeni list pomoću argumenata lista. Možemo odrediti naziv lista ili indeks lista. Možemo provjeriti vraćaju li obje funkcije isti izlaz s identical().
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
Izlaz:
## [1] TRUE
Možemo kontrolirati koje će ćelije čitati na 2 načina
- Koristite argument n_max za vraćanje n redaka
- Koristite argument raspona u kombinaciji s cell_rows ili cell_cols
Na primjer, postavili smo n_max jednako 5 za uvoz prvih pet redaka.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Ako promijenimo col_names u FALSE, R automatski stvara zaglavlja.
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_bez_zaglavlja
U podatkovnom okviru iris_no_header, readxl je generirao pet naziva rezerviranih mjesta. Starije verzije su proizvele X__1 do X__5, dok trenutne verzije proizvode …1 do …5.
Također možemo koristiti raspon argumenata za odabir redaka i stupaca u proračunskoj tablici. U donjem kodu koristimo excel stil za odabir raspona od A1 do B5.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
Izlaz:
## [1] 4 2
example_1 vraća 4 retka i 2 stupca. Raspon A1:B5 pokriva pet redaka proračunske tablice, ali prvi se koristi kao zaglavlje, zbog čega je dimenzija 4 puta 2.
U drugom primjeru koristimo funkciju cell_rows() koja kontrolira raspon redaka za vraćanje. Ako želimo uvesti retke od 1 do 5, možemo postaviti cell_rows(1:5). Imajte na umu da cell_rows(1:5) vraća isti izlaz kao 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)
Izlaz:
## [1] 4 5
example_2, nasuprot tome, je 4 puta 5. cell_rows(1:5) ponovno tretira prvi redak kao zaglavlje, pa se vraćaju četiri retka podataka u svih pet stupaca.
U slučaju da želimo uvesti retke koji ne počinju prvim redom, moramo uključiti col_names = FALSE. Ako koristimo range = cell_rows(2:5), postaje očito da naš podatkovni okvir više nema zaglavlje.
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)
Također možete odabrati stupce po slovu, točno kao u Excelu:
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
Izlaz:
## [1] 150 2
Napomena: raspon = cell_cols(“A:B”), vraća izlaz svih ćelija s vrijednošću koja nije nula. Skup podataka sadrži 150 redaka, stoga read_excel() vraća retke do 150. To se potvrđuje funkcijom dim().
Argument na govori read_excel() koje vrijednosti treba tretirati kao nedostajuće. Prebrojite ih pomoću sum() i is.na():
- iznos
- je.na
Evo koda
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Izlaz:
## [1] 50
Nedostaje nam 50 vrijednosti, a to su redovi koji pripadaju vrsti setosa.
Uvoz podataka iz drugog statističkog softvera
Datoteke iz drugih statističkih paketa uvoze se s utočište paket koji podržava SAS, STATA i SPSS. Možemo koristiti sljedeću funkciju za otvaranje različitih vrsta skupova podataka, ovisno o ekstenziji datoteke:
- SAS: read_sas()
- STATA: read_dta() (ili read_stata(), koji su identični)
- SPSS: read_sav() ili read_por(). Moramo provjeriti proširenje
Svakoj od ovih funkcija potreban je samo jedan argument, PATH gdje je datoteka pohranjena, i svaka prihvaća URL jednako lako kao lokalna staza.
library(haven)
utočište dolazi s conda r-essential inače idite na link ili u terminalu conda install -c conda-forge r-haven
Čitanje SAS datoteka
Za naš primjer koristit ćemo skup podataka o prijemu iz IDRE-a.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
Izlaz:
## # 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
Čitanje STATA datoteka
Za STATA podatkovne datoteke možete koristiti read_dta(). Koristimo potpuno isti skup podataka, ali pohranjujemo u .dta datoteku.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
Izlaz:
## # 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
Čitanje SPSS datoteka
read_sav() otvara SPSS datoteku koja ima ekstenziju .sav.
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
Izlaz:
## # 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
Najbolje prakse za uvoz podataka
Pregledavanje donje kontrolne liste prije uvoza štedi većinu naknadnog čišćenja:
- Tipičan format za proračunsku tablicu je korištenje prvih redaka kao zaglavlja (obično naziv varijable).
- Izbjegavajte prazne prostore u nazivu datoteke ili stupca jer se mogu pročitati kao razdjelnik stupaca. Umjesto toga koristite podcrtu.
- Poželjna su kratka imena
- Ne koristite simbole u nazivu. Napišite tečaj_dolar_euro umjesto tečaj_$_€.
- Kodirajte nedostajuće vrijednosti kao NA, a ne kao praznine, crtice ili kontrolne brojeve poput -99, koji se inače moraju naknadno očistiti.
Uvoz podataka u R: Referenca funkcija
Donja tablica navodi funkciju uvoza za svaku vrstu datoteke, biblioteku koja je pruža i njezine zadane argumente:
| Knjižnica | Cilj | funkcija | Zadani argumenti |
|---|---|---|---|
| utils | Pročitajte CSV datoteku | pročitaj.csv() | datoteka, zaglavlje = TRUE, sep = “,” |
| readxl | Pročitajte EXCEL datoteku | read_excel() | put, raspon = NULL, imena_kolaca = TRUE |
| utočište | Pročitaj SAS datoteku | read_sas() | put |
| utočište | Pročitaj STATA datoteku | čitaj_podatke() / čitaj_statu() | put |
| utočište | Pročitajte SPSS datoteku | read_sav() | put |
Druga tablica prikazuje načine uvoza selekcije pomoću read_excel():
| funkcija | Cilj | argumenti |
|---|---|---|
| read_excel() | Pročitajte n redaka | n_max = 10 |
| Odaberite retke i stupce kao u excelu | raspon = “A1:D10” | |
| Odaberite retke s indeksima | raspon= redovi_ćelija(1:3) | |
| Odaberite stupce sa slovima | raspon = cell_cols(“A:C”) |







