13 Kreiranje podatkovnih okvira (data frame)

Podatkovni okviri (data frame) su uređeni dvodimenzionalni skupovi podataka koji se mogu sastojati od elemenata različitih tipova, uz uvjet da se unutar pojedinog stupca nalaze elementi istog tipa. Primjer:

##    Drzava  Broj_turistickih_dolazaka Broj_turistickih_putovanja_(odlazni)
## 1. Croatia 57668                     2980                                
## 2. France  211998                    48069                               
## 3. China   158606                    149720                              
## 4. Italy   93228.6                   61194.6                             
## 5. Austria 30816                     11043                               
## 6. Ireland 10926                     8643

Podaci se odnose na zadnje dostupne podatke iz 2018. godine dostupne na mrežnim stranicama Svjetske Banke, DT.INT.ARVL i ST.INT.DPRT izraženi u tisućama. Recimo da se ovi podaci žele zapisati u obliku podatkovnog okvira. Za to postoji više načina. Prvi način:

y <- c("Croatia",   57668.00,   2980.00,
      "France", 211998.00,  48069.00,
      "China",  158606.00,  149720.00,
      "Italy",  93228.60,    61194.60,
      "Austria",    30816.00, 11043.00,
      "Ireland",    10926.00,   8643.00)

Turisti <- matrix(y, nrow=6, ncol=3, byrow=TRUE)
colnames(Turisti)<-c("Drzava",  "Broj_turistickih_dolazaka", 
                     "Broj_turistickih_putovanja_(odlazni)")
rownames(Turisti)<-c("1.","2.","3.","4.","5.","6.")
Turisti1<-as.data.frame(Turisti)

#s obzirom da su podaci uneseni mješovito s obzirom na tip, 
# ako se broj turističkih dolazaka i odlazaka ne definiraju kao 
# double ili integer, preuzet će tip chr

Turisti1$`Broj_turistickih_dolazaka`<-as.double(Turisti1$`Broj_turistickih_dolazaka`)
Turisti1$`Broj_turistickih_putovanja_(odlazni)`<-as.double(Turisti1$`Broj_turistickih_putovanja_(odlazni)`)
Turisti1
##     Drzava Broj_turistickih_dolazaka Broj_turistickih_putovanja_(odlazni)
## 1. Croatia                   57668.0                               2980.0
## 2.  France                  211998.0                              48069.0
## 3.   China                  158606.0                             149720.0
## 4.   Italy                   93228.6                              61194.6
## 5. Austria                   30816.0                              11043.0
## 6. Ireland                   10926.0                               8643.0

Drugi način:

Drzava <- c("Croatia", "France", "China", "Italy", "Austria", "Ireland")
Br_t_dol<-c(57668, 211998, 158606, 93228,  30816, 10926)
Br_t_odl<-c(2980, 48069, 14972, 61194, 11043, 8643)
Turisti2<-data.frame(Drzava, Br_t_dol, Br_t_odl)
Turisti2
##    Drzava Br_t_dol Br_t_odl
## 1 Croatia    57668     2980
## 2  France   211998    48069
## 3   China   158606    14972
## 4   Italy    93228    61194
## 5 Austria    30816    11043
## 6 Ireland    10926     8643

Treći način:

D1<-c("Croatia",    57668.00,   2980.00)
D2<-c("France", 211998.00,  48069.00)
D3<-c("China",  158606.00,  149720.00)
D4<-c("Italy",  93228.00,    61194.60)
D5<-c("Austria",    30816.00, 11043.00)
D6<-c("Ireland",    10926.00,   8643.00)
Tur<-rbind(D1, D2, D3, D4, D5, D6)
colnames(Tur)<-c("Drzava",  "Broj_turistickih_dolazaka", 
                 "Broj_turistickih_putovanja_(odlazni)")
rownames(Tur)<-c("1.","2.","3.","4.","5.","6.")
Turisti3<-as.data.frame(Tur)

#s obzirom da su podaci uneseni mješovito s obzirom na tip, 
# ako se broj turističkih dolazaka i odlazaka ne definiraju kao 
# double ili integer, preuzet će tip chr

Turisti3$`Broj_turistickih_dolazaka`<-as.double(Turisti3$`Broj_turistickih_dolazaka`)
Turisti3$`Broj_turistickih_putovanja_(odlazni)`<-as.double(Turisti3$`Broj_turistickih_putovanja_(odlazni)`)
Turisti3
##     Drzava Broj_turistickih_dolazaka Broj_turistickih_putovanja_(odlazni)
## 1. Croatia                     57668                               2980.0
## 2.  France                    211998                              48069.0
## 3.   China                    158606                             149720.0
## 4.   Italy                     93228                              61194.6
## 5. Austria                     30816                              11043.0
## 6. Ireland                     10926                               8643.0

Četvrti način:

Turisti4<-data.frame(Drzava=c("Croatia", "France", "China", 
                              "Italy", "Austria", "Ireland"), 
                     Br_t_dol=c(57668, 211998, 158606, 
                                93228, 30816, 10926), 
                     Br_t_odl=c(2980, 48069, 14972, 
                                61194, 11043, 8643))
Turisti4
##    Drzava Br_t_dol Br_t_odl
## 1 Croatia    57668     2980
## 2  France   211998    48069
## 3   China   158606    14972
## 4   Italy    93228    61194
## 5 Austria    30816    11043
## 6 Ireland    10926     8643

Može se uočiti da su drugi i četvrti način jednostavniji i brži za primjenu. Poanta ovih primjera je da uočite da je do rješenja moguće doći na različite načine. Dakako, neki od načina bit će elegantniji od drugih, ali važno je uočiti da ne postoji isključivo „jedan način na koji se nešto radi”. Igrajte se, isprobavajte i otkrijte svoj stil.

Već je pri unosu podataka u podatkovni okvir na prvi i treći način primijenjen jedan oblik odabira. Prije nego se pozabavimo odabirima, pogledajmo što čini podatkovni okvir.