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.

  • 📄 CSV uvoz: read.csv(datoteka, zaglavlje = TRUE, sep = “,”) učitava datoteku odvojenu zarezima iz lokalne putanje ili URL.
  • ⚠️ Promjena verzije: Od verzije R 4.0.0, stupci sa znakovima ostaju znakovi jer stringsAsFactors sada ima zadanu vrijednost FALSE.
  • 📗 Uvoz iz Excela: read_excel() iz readxl-a obrađuje i .xls i .xlsx datoteke, a excel_sheets() prvo ispisuje svaki radni list.
  • 🎯 Precizan odabir: n_max ograničava retke, raspon prihvaća Excel notaciju, a cell_rows() ili cell_cols() prihvaćaju indekse i slova.
  • 🔄 Ostali softver: haven nudi read_sas(), read_dta() i read_sav(), a svakom je potrebna samo putanja ili URL.
  • 🧹 Čisti unos: Kodirajte nedostajuće vrijednosti kao NA i izbjegavajte razmake ili simbole u nazivima stupaca prije uvoza.

Uvoz podataka u R

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.

Readxl_Primjer

Za provjeru lokacije određene proračunske tablice, unesite njezino ime:

readxl_example("geometry.xls")

Readxl_Primjer

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

  1. Koristite argument n_max za vraćanje n redaka
  2. 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)

Excel_Sheets

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.

Excel_Sheets

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.

Excel_Sheets

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.

Excel_Sheets

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)

Excel_Sheets

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():

  1. iznos
  2. 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”)

Pitanja i odgovori

R 4.0.0 je promijenio zadanu vrijednost stringsAsFactors s TRUE na FALSE. Stupci znakova sada ostaju znakovi. Eksplicitno proslijedite argument ako se vaša skripta mora ponašati identično na starijim verzijama R-a.

Zamijenite URL s punom lokalnom putanjom u navodnicima, kao što je „C:/Korisnici/ime/podaci.csv“. Koristite kose crte naprijed ili dvostruke kose crte unatrag na Windowsi potvrdite radni direktorij pomoću getwd().

readxl čita .xls i .xlsx datoteke u čistom R-u bez Java ovisnost. Samo stariji xlsx paket zahtijeva Java kroz rJava, zbog čega je readxl preporučeni izbor.

Tihe promjene tipa pri uvozu čest su izvor nereproducibilnih rezultata umjetne inteligencije. Eksplicitno deklariranje tipova stupaca, dok ih read_csv() izvještava, osigurava da se skup podataka za učenje svaki put učitava identično.

Da. AI asistenti mogu dijagnosticirati pogrešne separatore, probleme s kodiranjem i pogrešno pročitati zaglavlja iz poruke o pogrešci. Uvijek potvrdite rezultat pomoću str() ili glimpse() prije nastavka analize.

Sažmite ovu objavu uz: