8 Uvoz podataka

U ovom poglavlju objašnjavaju se različiti načini uvoza podataka u R, uključujući učitavanje lokalnih datoteka poput .csv i .xlsx, dohvaćanje podataka s internetskih izvora te povezivanje s bazama podataka putem SQL upita. Poglavlje pokriva ključne funkcije i specijalizirane biblioteke poput readxl i DBI. Na kraju, opisane su uobičajene greške pri uvozu podataka te najbolje prakse za osiguravanje pravilnog i sigurnog rada s podacima, uz savjete za optimizaciju procesa uvoza.

8.1 Uvoz podataka pohranjenih na računalu

Postoji nekoliko različitih načina učitavanja podataka u R. Ako podatke imate na računalu i ako su u .csv formatu, onda ih je moguće učitati pomoću naredbe read.csv(). Podaci prethodno moraju biti pripremljeni kao podatkovni okvir (varijable u stupcima, a opažanja u recima).

> data <- read.csv("data.csv")

Ako se podatkovni okvir ne nalazi u direktoriju projekta, tad je potrebno navesti put do datoteke, na primjer:

> data <- read.csv("C:/User/Dokumenti/datoteka.csv")

Za učitavanje običnih tekstualnih datoteka, može se koristiti read.table ili readLines.

> data <- read.table("putanja/do/datoteke.txt", header = TRUE, sep = "\t")

Za učitavanje MS Excel datoteka, potreban je odgovarajući paket za provođenje te naredbe. readxl ili openxlsx su paketi koji sadrže naredbe za učitavanje Excel datoteke.

> #instaliranje paketa
> install.packages("openxlsx")
> 
> #pozivanje paketa (aktivacija)
> library(openxlsx)
> 
> #naredba
> data <- read.xlsx("data.xlsx")

8.2 Uvoz podataka iz R paketa

Da biste učitali podatke iz paketa koji sadrži podatke u R, prvo morate instalirati i učitati paket, a zatim učitati podatke koji su dio tog paketa. Većina paketa koji sadrže podatke omogućuju izravan pristup tim podacima nakon što se paket učita.

> install.packages("ggplot2")
> library(ggplot2)
> data(mpg)

Nakon ovog koraka, skup podataka mpg je dostupan za analizu i vizualizaciju u vašem R radnom prostoru. Također, popularni su podaci data(mtcars), data(“iris”) i data(“USArrests”), dostupni u baznoj verziji R-a. Oni dolaze u paketu datasets koji je automatski učitan kada pokrenete R. Dakle, nije potrebno instalirati ili posebno učitati ovaj paket da biste pristupili ovim skupovima podataka.

8.3 Dohvaćanje i uvoz podataka iz online izvora

Ako želite općenito dohvatiti podatke s nekog URL-a u R-u, postupak će ovisiti o formatu tih podataka. Najčešće korišteni formati za online podatke su CSV, XML i HTML tablice. Za .csv to možete učiniti na sljedeći način:

> url <- "http://example.com/data.csv"
> podaci <- read.csv(url)

Isto se postiže i na ovaj način:

> podaci <- read.csv("http://example.com/data.csv")

Za XML podatke, potreban je paket xml2:

> install.packages("xml2")
> library(xml2)
> 
> url <- "http://example.com/data.xml"
> podaci <- read_xml(url)

Za dohvaćanje tablica iz HTML stranica koristi se paket rvest:

> install.packages("rvest")
> library(rvest)
> 
> url <- "http://example.com"
> podaci <- url %>% 
+   read_html() %>% 
+   html_table()

U ovom primjeru, html_table() će pokušati dohvatiti sve tablice s navedene mrežne stranice. Možete dodati dodatne parametre ili funkcije za izdvajanje određene tablice.

Prije upotrebe bilo kojeg od ovih paketa, važno je provjeriti dopušta li URL s kojeg dohvaćate podatke takav pristup i je li zaštićen autorskim pravima ili drugim ograničenjima. Također, neki URL-ovi mogu zahtijevati posebne parametre za pristup (npr. API ključeve ili ovlaštenja).

Za učitavanje podataka iz specifičnih online izvora koji sadrže baze podataka (npr. World Bank), možete koristiti pakete u R-u koji su specijalizirani za povezivanje i dohvaćanje podataka iz tih izvora. Jedan od takvih paketa je wbstats, koji omogućuje pristup upravo podacima Svjetske banke.

> install.packages("wbstats")
> library(wbstats)

Prije nego što dohvatite podatke, možete istražiti koji su indikatori dostupni. wbstats paket pruža funkcije za pretragu indikatora.

> wb_indicators <- wbsearch("labor market") 

Nakon što identificirate željene indikatore, možete dohvatiti podatke koristeći wb funkciju. Morate navesti indikatore i, po potrebi, druge parametre poput zemalja, vremenskih razdoblja i sl.

> podaci <- wb(indicator = "ID_indikatora", country = c("HR", "SI"), 
+              startdate = 2010, enddate = 2020)

Ovdje ID_indikatora predstavlja identifikator indikatora koji želite dohvatiti, country je lista zemalja (kodova zemalja), a startdate i enddate definiraju vremenski raspon za koji želite podatke.

8.4 Uvoz podataka iz baza podataka

Učitavanje podataka iz online SQL baza podataka u R zahtijeva nekoliko koraka i odgovarajuće pakete za uspostavljanje veze s bazom podataka. Prvo, trebate instalirati i učitati odgovarajuće pakete. Na primjer, za MySQL možete koristiti paket RMySQL, a za PostgreSQL RPostgreSQL. Drugi korak je uspostavljanje veze s bazom podataka. Trebat će vam podaci za pristup bazi podataka kao što su ime hosta (servera), korisničko ime, lozinka i ime baze podataka. Nakon uspostavljanja veze, možete izvršiti SQL upite da biste dohvatili podatke.

> install.packages("DBI")
> install.packages("RMySQL")
> library(DBI)
> library(RMySQL)
> 
> veza <- dbConnect(MySQL(), 
+                   dbname = "ime_baze_podataka", 
+                   host = "host_baze_podataka", 
+                   username = "korisnicko_ime", 
+                   password = "lozinka")
> 
> upit <- "SELECT * FROM neka_tablica"
> podaci <- dbGetQuery(veza, upit)

Nakon dohvaćanja podataka, važno je prekinuti vezu s bazom podataka (ako ne kreirate interaktivnu aplikaciju). Kada radite s bazama podataka, posebnu pažnju treba posvetiti sigurnosti, posebno kod rukovanja korisničkim imenima i lozinkama. Koristite sigurne metode za pohranu i pristup ovim podacima.

> dbDisconnect(veza)

Za druge vrste baza podataka (npr. SQL Server, Oracle) postupak je sličan, ali će se koristiti različiti paketi (npr. ROracle, RODBC za Oracle, RSQLServer za SQL Server, itd.).

8.5 Uobičajene greške pri uvozu podataka

  • Nepravilno navođenje puta do datoteke (jedna od čestih grešaka je pogrešno navođenje putanja do datoteka, što može dovesti do grešaka pri učitavanju)

  • Zanemarivanje opcija za učitavanje (neiskorištavanje opcija poput stringsAsFactors (za read.csv() i read.table()) može dovesti do neželjenih tipova podataka, posebno kada su u pitanju tekstualni podaci, što će produljiti vrijeme prilagodbe podataka)

  • Sigurnosna pitanja pri radu s bazama podataka (neadekvatno rukovanje pristupnim podacima za baze podataka može predstavljati sigurnosni rizik)

Najbolje prakse za uvoz podataka

  • Korištenje readr paketa za CSV datoteke: paket readr nudi funkcije kao što su read_csv(), koje su često brže i bolje rukuju tipovima podataka od osnovnih R funkcija poput read.csv().

  • Upotreba paketa haven za rad s datotekama SPSS, Stata, i SAS: ako radite s podacima iz ovih statističkih programa, haven omogućuje efikasno učitavanje takvih datoteka.

  • Pazite na enkodiranje znakova: kod učitavanja podataka iz različitih jezičnih područja, važno je paziti na pravilno enkodiranje znakova.

  • Provjerite i očistite podatke nakon učitavanja: uvijek provjerite strukturu učitanih podataka (str(), head(), itd.) i po potrebi izvršite početno čišćenje podataka (npr. obrada vrijednosti koje nedostaju), kao što je objašnjeno u poglavlju o radu s podatkovnim okvirima.

Pitanja za ponavljanje

  1. Koja je osnovna naredba za učitavanje .csv datoteka u R i kako navodimo put do datoteke koja se nalazi u drugom direktoriju?

  2. Kako se koristi funkcija read.table() za učitavanje tekstualnih datoteka i što određuju argumenti poput header = TRUE i sep = “?

  3. Koje pakete treba koristiti za učitavanje podataka iz Excel datoteka i kako aktiviramo te pakete nakon instalacije?

  4. Na koji način učitavamo podatke koji su već sadržani u paketu ggplot2, poput skupa podataka mpg?

  5. Objasnite postupak učitavanja .csv datoteke s internetskog URL-a i navedite primjer takve naredbe.

  6. Kako dohvaćamo podatke u XML formatu i koji paket je potreban za tu funkcionalnost?

  7. Ako koristimo SQL bazu podataka za učitavanje podataka u R, koji su osnovni koraci za povezivanje i dohvaćanje podataka pomoću SQL upita?

  8. Zašto je važno pravilno rukovati pristupnim podacima za baze podataka, kao što su korisničko ime i lozinka, i kako se uspostavlja i prekida veza s bazom podataka?

  9. Koje su uobičajene greške koje mogu nastati pri uvozu podataka u R, posebice kod rada s putanjama do datoteka i tipovima podataka?

  10. Koje su najbolje prakse kod učitavanja podataka, a koje uključuju korištenje paketa readr i haven?