17 Kreiranje tablica

Tablica s početka priče, koja prikazuje osnovne tipove podataka kreirana je koristeći paket knitr (Xie and al 2023) i naredbu kable().

library(knitr)
x <- c("double",    "1, 2.33, 50.99, 3e10", "realni brojevi",
                "integer",  "5l, -2, 5387l",    "cijeli brojevi",
                "character",    "slova, oznake, 50 %, pa}", "znakovni tip",
                "logical",  "TRUE, FALSE, T, F",    "logički",
                "complex",  "1+5i, 5-2i", "kompleksni brojevi",
                "raw",  "as.raw(11)",   "sirovi")

Tablica <- matrix(x, nrow=6, ncol=3, byrow=TRUE)
colnames(Tablica)<-c("Naziv",   "Primjer", "Vrsta")
rownames(Tablica)<-c("1.","2.","3.","4.","5.","6.")
T<-as.table(Tablica)
knitr::kable(T)
Naziv Primjer Vrsta
1. double 1, 2.33, 50.99, 3e10 realni brojevi
2. integer 5l, -2, 5387l cijeli brojevi
3. character slova, oznake, 50 %, pa} znakovni tip
4. logical TRUE, FALSE, T, F logički
5. complex 1+5i, 5-2i kompleksni brojevi
6. raw as.raw(11) sirovi

U prvom koraku, kreiran je vektor koji sadrži sve podatke. Potom je vektor konvertiran u matricu odgovarajućih dimenzija. Potom su kreirani zaglavlje i predstupac, odnosno stupcima i recima su pridruženi nazivi. Tad je matrica spremljena kao tablica. Pozivom knitr::kable() ispisuje se tablica koja je pregledna i obogaćena izmjenično obojanim recima za lakše čitanje.

Usporedimo to s ispisom tablice bez posljednje naredbe, to jest bez upotrebe knitr paketa. Rezultat je ispis tablice, ali u usporedbi s prvom tablicom djeluje manje pregledno.

x <- c("double",    "1, 2.33, 50.99, 3e10", "realni brojevi",
                "integer",  "5l, -2, 5387l",    "cjeli brojevi",
                "character",    "slova, oznake, 50 %, pa}", "znakovni tip",
                "logical",  "TRUE, FALSE, T, F",    "logički",
                "complex",  "1+5i, 5-2i", "kompleksni brojevi",
                "raw",  "as.raw(11)",   "sirovi")

Tablica <- matrix(x, nrow=6, ncol=3, byrow=TRUE)
colnames(Tablica)<-c("Naziv",   "Primjer", "Vrsta")
rownames(Tablica)<-c("1.","2.","3.","4.","5.","6.")
T<-as.table(Tablica)
T
##    Naziv     Primjer                  Vrsta             
## 1. double    1, 2.33, 50.99, 3e10     realni brojevi    
## 2. integer   5l, -2, 5387l            cjeli brojevi     
## 3. character slova, oznake, 50 %, pa} znakovni tip      
## 4. logical   TRUE, FALSE, T, F        logički           
## 5. complex   1+5i, 5-2i               kompleksni brojevi
## 6. raw       as.raw(11)               sirovi

Nadalje, podatkovni okvir se može konvertirati i ispisati kao tablica. Ranije je tako kreiran podatkovni okvir Tur_eu, kojeg možemo ispisati u obliku tablice:

knitr::kable(Tur_eu)
Drzava Br_t_dol Br_t_odl EU
1 Croatia 57668 2980 TRUE
2 France 211998 48069 TRUE
4 Italy 93228 61194 TRUE
5 Austria 30816 11043 TRUE
6 Ireland 10926 8643 TRUE

Možete uočiti da je u ovom slučaju preskočen korak konverzije. Također, ako se želi prilagoditi ispis u obliku tablice, tada se nazivi država mogu staviti u predstupac u kojem se trenutno nalaze samo redni brojevi.

#prvi stupac dodijelimo novom vektoru
predst <- Tur_eu[,1]

#Kreiramo dataftame koristeći stupce broja odlazaka i dolazaka turista
tabl <-Tur_eu[,c(2:3)]

#pridružujemo novi vektor nazivima redaka tabl
rownames(tabl) <- predst

#ispisujemo tabl
knitr::kable(tabl)
Br_t_dol Br_t_odl
Croatia 57668 2980
France 211998 48069
Italy 93228 61194
Austria 30816 11043
Ireland 10926 8643

Iako se ne radi o tablicama, nego o oblicima podatkovnih okvira, tibble se često spominje kao alternativa tablicama. Tibble je moderna verzija podatkovnog okvira u R-u, koja je dio tidyverse paketa. Tibble je dizajniran da bude jednostavniji i učinkovitiji za upotrebu u analizi podataka, posebice u kontekstu tidyverse filozofije i funkcija.

Jedan od glavnih razloga za korištenje tibble u kontekstu tablica je to što ispisuje podatke na čitljiviji način u konzoli. Naime, prikazuju samo prvi dio velikih skupova podataka i bolje upravljaju širinom stupaca.Nadalje, za razliku od tradicionalnih podatkovnih okvira, tibble ne pretvara znakove u faktore automatski. To je korisno jer sprječava neočekivane probleme koji proizlaze iz neželjenih tipova podataka.

Ostale prednosti tibblea se odnose na kreiranje podskupova (ne rezultiraju jednodimenzionalnim strukturama, kao što su vektori, što je čest slučaj s klasičnim podatkovnim okvirima). Osim toga, tibble omogućuju imena stupaca koja nisu valjana u standardnim R podatkovnim okvirima, kao što su prazni znakovi ili simboli. Moguće ih je dalje obrađivati i vizualizirati s drugim tidyverse paketima kao što su dplyr, ggplot2, tidyr i druge, što olakšava obradu podataka i vizualizaciju.

library(tibble)

tibi <- tibble(
  Drzava = Tur_eu[,1],
  Dolasci = Tur_eu[,2],
  Odlasci = Tur_eu[,3]
)

tibi
## # A tibble: 5 × 3
##   Drzava  Dolasci Odlasci
##   <chr>     <dbl>   <dbl>
## 1 Croatia   57668    2980
## 2 France   211998   48069
## 3 Italy     93228   61194
## 4 Austria   30816   11043
## 5 Ireland   10926    8643

17.1 Prednosti i nedostaci tablica te najčešće greške

Prednosti kreiranja tablica u R-u

  • Poboljšana čitljivost (upotreba funkcija kao što je kable() iz knitr paketa omogućava stvaranje tablica koje su čitljive i estetski ugodne, što je posebno korisno za izvještavanje i dijeljenje rezultata),

  • Fleksibilnost i prilagodba (R nudi širok spektar mogućnosti za prilagodbu tablica, uključujući stiliziranje, formatiranje i dodavanje zaglavlja, što omogućava precizno prilagođavanje izgleda tablica potrebama korisnika),

  • Integracija s drugim R paketima (tablice kreirane u R-u lako se integriraju s drugim paketima za analizu i vizualizaciju podataka, omogućujući glatku suradnju između različitih koraka analitičkog procesa).

Uobičajene greške pri kreiranju tablica

  • Neadekvatno formatiranje (zanemarivanje detalja formatiranja, poput širine stupaca ili poravnanja teksta, može rezultirati tablicama koje su teške za čitanje),

  • Pogrešno rukovanje velikim skupovima podataka (pokušaj prikaza prevelikog broja redaka ili stupaca bez odgovarajućeg prilagođavanja može dovesti do nepreglednih tablica koje ne stane na stranicu ili zaslon),

  • Zanemarivanje prednosti tibblea (neiskorištavanje prednosti tibblea može rezultirati manje efikasnim radom s podacima, posebno kad je riječ o velikim skupovima podataka ili kad je potrebna integracija s tidyverse ekosustavom).

Najbolje prakse za kreiranje tablica

  • Koristite kable() za osnovne potrebe (za jednostavne potrebe prikazivanja podataka, funkcija kable() iz knitr paketa je često dovoljna i pruža dobru ravnotežu između jednostavnosti i fleksibilnosti).

  • Isprobajte paket gt za složenije tablice (za složenije potrebe, poput stvaranja visoko prilagođenih tablica za publikacije, paket gt nudi napredne mogućnosti stiliziranja i prilagodbe),

  • Prilagodite izgled tablice korisničkim potrebama (uvijek prilagodite izgled tablice tako da odgovara kontekstu u kojem će biti korištena, bilo da je to seminarski rad, esej, izvještaj ili prezentacija),

  • Razmotrite korištenje tibblea za rad s podacima (tibble, modernija verzija podatkovnog okvira, nudi bolju performansu i veću fleksibilnost pri radu s podacima, što može olakšati kreiranje i manipulaciju tablicama).