16 Uvoz podataka

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

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.

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)

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.

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

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)

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