14 Rad s podatkovnim okvirima

14.1 Uvid u podatkovni okvir

Ako bismo htjeli provjeriti što podatkovni okvir sadrži, to možemo učiniti koristeći str(), head() ili tail().

str(Turisti1)
## 'data.frame':    6 obs. of  3 variables:
##  $ Drzava                              : chr  "Croatia" "France" "China" "Italy" ...
##  $ Broj_turistickih_dolazaka           : num  57668 211998 158606 93229 30816 ...
##  $ Broj_turistickih_putovanja_(odlazni): num  2980 48069 149720 61195 11043 ...

Funkcija str() daje uvid u data frame (ili df), tj. podatkovni okvir. Ovaj podatkovni okvir sastoji se od 6 opažanja za svaku od 3 varijable. Navedene su varijable, tip varijabli i ispis prvih nekoliko elemenata (slično zapisu u prozoru Environment). Dakle, podatkovni okvir je uređen varijablama i brojem opažanja. Varijable su zapisane u stupcima, a opažanja po recima.

head() će standardno rezultirati prikazom prvih 6 redaka df-a. Ako bismo uz naziv df-a dodali i broj, na primjer 3, tada bi ispis sadržavao prva tri retka.

head(Turisti1,3)
##     Drzava Broj_turistickih_dolazaka Broj_turistickih_putovanja_(odlazni)
## 1. Croatia                     57668                                 2980
## 2.  France                    211998                                48069
## 3.   China                    158606                               149720

Slična je situacija s naredbom tail(), samo što standardno ispisuje posljednjih 6 redaka. Ako se uz naziv podatkovnog okvira doda broj, tada će ispisati onoliko redaka koliko je definirano brojem.

tail(Turisti1,2)
##     Drzava Broj_turistickih_dolazaka Broj_turistickih_putovanja_(odlazni)
## 5. Austria                     30816                                11043
## 6. Ireland                     10926                                 8643

Nadalje, može se koristiti i glimpse() iz paketa dplyr.

library(dplyr)
glimpse(Turisti1)
## Rows: 6
## Columns: 3
## $ Drzava                                 <chr> "Croatia", "France", "China", "…
## $ Broj_turistickih_dolazaka              <dbl> 57668.0, 211998.0, 158606.0, 93…
## $ `Broj_turistickih_putovanja_(odlazni)` <dbl> 2980.0, 48069.0, 149720.0, 6119…

Ako se podatkovni okvir pretražuje prema elementima, npr. [1,2], tada će odabrani element biti prvo opažanje pripisano drugoj varijabli (prvi redak, drugi stupac). Osim toga, češće se ispituje pojedina varijabla. Promotrimo to kroz nekoliko načina odabiranja elemenata iz podatkovnog okvira.

14.2 Odabir elemenata

Također, treba voditi računa da, ako se odabir ne spremi pod novim nazivom, “odabir” će se prikazati samo u ispisu (bez kreiranja novog vektora, matrice ili df-a). Najjednostavniji je način upis znaka dolara nakon naziva podatkovnog okvira. Po upisu znaka dolara, pokazat će se padajući izbornik s nazivima varijabli, pri čemu se može samo kliknuti na odabranu varijablu.

Turisti1$Drzava
## [1] "Croatia" "France"  "China"   "Italy"   "Austria" "Ireland"

Slično kao kod vektora, ako je već odabran jedan stupac (varijabla) iz df-a, tada će se upisom broja u uglate zagrade izolirati taj element. Na primjer, Turisti1$Drzava[3], rezultira ispisom 3. elementa varijable Država iz podatkovnog okvira Turisti1.

Turisti1$Drzava[3]
## [1] "China"

No, s obzirom da je podatkovni okvir dvodimenzionalan (ima retke i stupce), element se može odabrati i brojčanim određivanjem retka i stupca. Na primjer, Turisti1[1,2] će rezultirati ispisom elementa koji se nalazi u prvom retku i drugom stupcu.

Turisti1[1,2]
## [1] 57668

Obratite pozornost na to da Turisti1[2,1] rezultira odabirom elementa koji se nalazi u drugom retku prvog stupca. Odnosno, Turisti1[1,2] \(\neq\) Turisti1[2,1].

Turisti1[2,1]
## [1] "France"

Sljedeći je način odabira elementa upisom naziva varijable u uglate zagrade uz naziv podatkovnog okvira. Pritom treba paziti da naziv bude unutar navodnih znakova.

Turisti1["Drzava"]
##     Drzava
## 1. Croatia
## 2.  France
## 3.   China
## 4.   Italy
## 5. Austria
## 6. Ireland

Ako se od moguće dvije dimenzije odabere samo jedna, onda će rezultat biti prikaz retka ili stupca. Tako, na primjer, Turisti1[2,] rezultira prikazom drugog retka.

Turisti1[2,]
##    Drzava Broj_turistickih_dolazaka Broj_turistickih_putovanja_(odlazni)
## 2. France                    211998                                48069

S druge strane, Turisti1[,2] rezultirat će prikazom drugog stupca.

Turisti1[,2]
## [1]  57668.0 211998.0 158606.0  93228.6  30816.0  10926.0

14.3 Dodavanje elemenata

USA <-data.frame(Drzava="United States", Br_t_dol=169324.92, Br_t_odl= 157873.00)
Turisti2<-rbind(Turisti2, USA)
Turisti2
##          Drzava Br_t_dol Br_t_odl
## 1       Croatia  57668.0     2980
## 2        France 211998.0    48069
## 3         China 158606.0    14972
## 4         Italy  93228.0    61194
## 5       Austria  30816.0    11043
## 6       Ireland  10926.0     8643
## 7 United States 169324.9   157873

Recimo da se za potrebe daljnje analize želi izvršiti subset europskih država. Iako je nama lako odrediti koje države pripadaju Europi, a koje drugim kontinentima, R-u je potrebno dodati podatke koji će sadržavati potrebne karakteristike. Jedan od načina je pridodavanje kontinenta svakom opažanju, a drugi je dodavanje elemenata logičkog tipa u obliku zasebne varijable. Ovdje će se iskoristiti drugi pristup. Sličan pristup može se, općenito primijeniti pri ručnom upisu i dodavanju varijable postojećem podatkovnom okviru.

EU<-c(TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,FALSE)
Turisti2<-cbind(Turisti2,EU)
Turisti2
##          Drzava Br_t_dol Br_t_odl    EU
## 1       Croatia  57668.0     2980  TRUE
## 2        France 211998.0    48069  TRUE
## 3         China 158606.0    14972 FALSE
## 4         Italy  93228.0    61194  TRUE
## 5       Austria  30816.0    11043  TRUE
## 6       Ireland  10926.0     8643  TRUE
## 7 United States 169324.9   157873 FALSE

14.4 Podskup podatkovnog okvira prema kriteriju (filtriranje)

Ponekad je za daljnju analizu potreban podskup podataka, što se postiže funkcijom subset(). Na primjer, recimo da nas zanimaju samo one države koje su zabilježile više od 30 000 dolazaka turista.

Tur_sub <- subset(Turisti1, Turisti1$`Broj_turistickih_dolazaka`>30000)
Tur_sub
##     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

Ili, na primjer, ako nas zanimaju sve države osim Hrvatske, onda će to izgledati ovako:

Tur_noCro<-subset(Turisti1, Drzava != "Croatia")
Tur_noCro
##     Drzava Broj_turistickih_dolazaka Broj_turistickih_putovanja_(odlazni)
## 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

Subset je moguće napraviti prema bilo kojem kriteriju kojeg je moguće zadati temeljem postojećih podataka. U nekim situacijama postojeći podaci neće biti dovoljni za potrebe analize i to će iziskivati dodavanje elemenata i/ili varijabli.

Možete stvoriti podskup temeljen na kriteriju članstva država u EU, pri čemu se koristi stupac EU kao logički vektor, na sljedeći način:

Tur_eu<-subset(Turisti2, EU==TRUE)
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

Iako je dobiven podskup prema traženom kriteriju, može se uočiti da su nazivi redaka ostali isti kao ranije.

14.5 Sortiranje elemenata

Ako se elementi u podatkovnom okviru žele redoslijedno urediti prema vrijednostima pojedine varijable, tada se provodi sortiranje, koje se najčešće vrši pomoću funkcije order() i uglatih zagrada.

Turisti2[order(Br_t_dol),]
##    Drzava Br_t_dol Br_t_odl    EU
## 6 Ireland    10926     8643  TRUE
## 5 Austria    30816    11043  TRUE
## 1 Croatia    57668     2980  TRUE
## 4   Italy    93228    61194  TRUE
## 3   China   158606    14972 FALSE
## 2  France   211998    48069  TRUE

Prethodni je ispis rezultirao poredanim prikazom podataka iz podatkovnog okvira Turisti2.

Ako bismo htjeli provjeriti kako podatkovni okvir izgleda nakon primjene ove funkcije, to možemo učiniti koristeći str(), head() ili tail().

str(Turisti2)
## 'data.frame':    7 obs. of  4 variables:
##  $ Drzava  : chr  "Croatia" "France" "China" "Italy" ...
##  $ Br_t_dol: num  57668 211998 158606 93228 30816 ...
##  $ Br_t_odl: num  2980 48069 14972 61194 11043 ...
##  $ EU      : logi  TRUE TRUE FALSE TRUE TRUE TRUE ...

Dok str daje uvid u dimenzije podatkovnog skupa, uz popis varijabli, njihovih vrsta te ispisa prvih nekoliko opažanja, head daje ispis prvih 6 redaka podatkovnog skupa.

head(Turisti2)
##    Drzava Br_t_dol Br_t_odl    EU
## 1 Croatia    57668     2980  TRUE
## 2  France   211998    48069  TRUE
## 3   China   158606    14972 FALSE
## 4   Italy    93228    61194  TRUE
## 5 Austria    30816    11043  TRUE
## 6 Ireland    10926     8643  TRUE

funkcija head() zadano (engl. default) prikazuje prvih 6 redaka podatkovnog okvira, a taj se broj može promijeniti, na primjer:

head(Turisti2, 7)
##          Drzava Br_t_dol Br_t_odl    EU
## 1       Croatia  57668.0     2980  TRUE
## 2        France 211998.0    48069  TRUE
## 3         China 158606.0    14972 FALSE
## 4         Italy  93228.0    61194  TRUE
## 5       Austria  30816.0    11043  TRUE
## 6       Ireland  10926.0     8643  TRUE
## 7 United States 169324.9   157873 FALSE

Funkcija tail() prikazuje posljednjih 6 redaka podatkovnog okvira, a može se podesiti i drugačiji broj redaka ovisno o potrebama.

tail(Turisti2)
##          Drzava Br_t_dol Br_t_odl    EU
## 2        France 211998.0    48069  TRUE
## 3         China 158606.0    14972 FALSE
## 4         Italy  93228.0    61194  TRUE
## 5       Austria  30816.0    11043  TRUE
## 6       Ireland  10926.0     8643  TRUE
## 7 United States 169324.9   157873 FALSE

Ono što se može uočiti iz pregleda podatkovnog okvira jest da nije došlo do promjene u poretku. Da bi promjena u poretku bila evidentirana, potrebno je kreirati novi podatkovni okvir.

Tur_ord<-Turisti2[order(Br_t_dol),]
Tur_ord
##    Drzava Br_t_dol Br_t_odl    EU
## 6 Ireland    10926     8643  TRUE
## 5 Austria    30816    11043  TRUE
## 1 Croatia    57668     2980  TRUE
## 4   Italy    93228    61194  TRUE
## 3   China   158606    14972 FALSE
## 2  France   211998    48069  TRUE

Funkcija sort() ne primjenjuje se na podatkovnom okviru, nego na vektorima, tako da ovdje nije od koristi.

Turisti2[order(Drzava),]
##    Drzava Br_t_dol Br_t_odl    EU
## 5 Austria    30816    11043  TRUE
## 3   China   158606    14972 FALSE
## 1 Croatia    57668     2980  TRUE
## 2  France   211998    48069  TRUE
## 6 Ireland    10926     8643  TRUE
## 4   Italy    93228    61194  TRUE

Obratite pozornost na to da je order() moguće primijeniti i na elementima tipa character. Nadalje, funkcija order() će uvijek sortirati vrijednosti silazno, ako drugačije nije navedeno. Redoslijed prema kriteriju uzlaznog povećavanja vrijednosti elemenata odlaznih turista moguće je zadati:

Turisti2[order(Br_t_odl, decreasing = TRUE),]
##    Drzava Br_t_dol Br_t_odl    EU
## 4   Italy    93228    61194  TRUE
## 2  France   211998    48069  TRUE
## 3   China   158606    14972 FALSE
## 5 Austria    30816    11043  TRUE
## 6 Ireland    10926     8643  TRUE
## 1 Croatia    57668     2980  TRUE

14.6 Brisanje elemenata

Nadalje, tijekom pripreme podataka za analizu može se pojaviti potreba za brisanjem elemenata, opažanja ili varijabli. Brisanje elementa zapravo se vrši putem zamjene elementa s oznakom za nedostupnu vrijednost (Not Available/Missing Values), koja predstavlja logičku konstantu duljine 1, a R ju tumači kao indikator nepostojeće vrijednosti.

Turisti2[5,4]<-NA
Turisti2
##          Drzava Br_t_dol Br_t_odl    EU
## 1       Croatia  57668.0     2980  TRUE
## 2        France 211998.0    48069  TRUE
## 3         China 158606.0    14972 FALSE
## 4         Italy  93228.0    61194  TRUE
## 5       Austria  30816.0    11043    NA
## 6       Ireland  10926.0     8643  TRUE
## 7 United States 169324.9   157873 FALSE

Brisanje stupca:

Turisti2$EU<-NULL
Turisti2
##          Drzava Br_t_dol Br_t_odl
## 1       Croatia  57668.0     2980
## 2        France 211998.0    48069
## 3         China 158606.0    14972
## 4         Italy  93228.0    61194
## 5       Austria  30816.0    11043
## 6       Ireland  10926.0     8643
## 7 United States 169324.9   157873

Napomena: Izmjene vezane za dodavanje i brisanje elemenata izravno utječu na postojeći dataset, bez da je potrebno kreirati novi objekt.

Drugi način odnosi se na prikaz bez pojedinog stupca i tehnički taj stupac neće biti obrisan, samo neće biti prikazan.

Turisti2[-2]
##          Drzava Br_t_odl
## 1       Croatia     2980
## 2        France    48069
## 3         China    14972
## 4         Italy    61194
## 5       Austria    11043
## 6       Ireland     8643
## 7 United States   157873

Da bi se stupac izbrisao koristeći ovaj pristup, potrebno je kreirati novi objekt:

Tur_odl<-Turisti2[-2]

Na sličan način, mogu se brisati reci ili samo ukloniti iz prikaza.

Tur0<-Turisti1[-1,]
Tur0
##     Drzava Broj_turistickih_dolazaka Broj_turistickih_putovanja_(odlazni)
## 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

Također, moguće je ukloniti više opažanja istovremeno, navodeći pripadajuće retke na prvom mjestu unutar uglatih zagrada, koristeći funkciju combine.

Tur_noEU<-Turisti2[-c(1,2,4,5,6),]
Tur_noEU
##          Drzava Br_t_dol Br_t_odl
## 3         China 158606.0    14972
## 7 United States 169324.9   157873

Osim toga, moguće je izvršiti i kombinaciju pretraživanja po varijablama i zamjenu elementa, na primjer:

#Za Br_t_dol Francuske, želi se zamijeniti postojeća vrijednost s NA
Turisti2$Br_t_dol[Turisti2$Drzava=="France"]<-NA
Turisti2
##          Drzava Br_t_dol Br_t_odl
## 1       Croatia  57668.0     2980
## 2        France       NA    48069
## 3         China 158606.0    14972
## 4         Italy  93228.0    61194
## 5       Austria  30816.0    11043
## 6       Ireland  10926.0     8643
## 7 United States 169324.9   157873

Iako u ovako jednostavnim primjerima, ovakav pristup djeluje suvišno, u zahtjevnijim skupovima podataka koji broje tisuće elemenata, ovaj je pristup često učinkovitiji.

14.7 Učitavanje podatkovnog okvira sadržanog u R-u

Postoje neki podatkovni okviri koji su već uključeni u R, a brojni su uključeni u različite pakete. Jedan od češće korištenih podatkovnih okvira za vježbu i primjere je iris. Podatkovni okvir iris sadrži opažanja o duljini i širini latica za tri vrste cvijeća iris (Iris setosa, versicolor i virginica). U spomenutom podatkovnom okviru postoji 150 opažanja (redaka) i 5 varijabli (stupaca), s nazivima: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width i Species.

Podatkovni okvir koji je sadržan u r-u ili nekom od već instaliranih paketa može se pozvati koristeći naredbu data(), na primjer, na sljedeći način:

data("iris")

Prvo, nakon što upišete data i otvorite zagradu, nudi se izbor dostupnih podatkovnih okvira. Drugo, ako vas zanimaju detalji o pojedinom podatkovnom okviru, potrebno je naziv upisati u tražilicu u prozoru Help (donji desni prozor). Provjerimo kako skup podataka izgleda.

str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
head(iris,5)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa

Ako ne želimo stalno koristiti operator $ u kombinaciji s nazivom podatkovnog okvira, korisna je funkcija attach(). Ta će funkcija pridružiti podatkovni okvir R-ovom putu traženja, što omogućuje pozivanje varijabli putem imena.

attach(iris)

14.8 Izračun pokazatelja deskriptivne statistike

Izračunajte nekoliko jednostavnih pokazatelja.

mean(Sepal.Length)
## [1] 5.843333
fivenum(Sepal.Width)
## [1] 2.0 2.8 3.0 3.3 4.4
sd(Sepal.Length)
## [1] 0.8280661

Kombinacija statističkih pokazatelja, s naglaskom na mjere središnje tendencije, može se dobiti naredbom summary().

summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 

14.9 Pretvaranje podatkovnog okvira u tablicu

Podatkovni okvir je najčešće korištena struktura pri analizi podataka. Uvozom podataka iz .csv i xlsx datoteka bavit ćemo se u sljedećoj lekciji.

Za sad, promotrimo mogućnosti kreiranja tablice. Iako se čitav podatkovni okvir može pretvoriti u tablicu (koristeći as.table()), to nije naročito korisno. Češće će biti korisno izolirati elemente koji se žele prikazati u tablici.

table(iris$Species)
## 
##     setosa versicolor  virginica 
##         50         50         50
table(Sepal.Length, Species)
##             Species
## Sepal.Length setosa versicolor virginica
##          4.3      1          0         0
##          4.4      3          0         0
##          4.5      1          0         0
##          4.6      4          0         0
##          4.7      2          0         0
##          4.8      5          0         0
##          4.9      4          1         1
##          5        8          2         0
##          5.1      8          1         0
##          5.2      3          1         0
##          5.3      1          0         0
##          5.4      5          1         0
##          5.5      2          5         0
##          5.6      0          5         1
##          5.7      2          5         1
##          5.8      1          3         3
##          5.9      0          2         1
##          6        0          4         2
##          6.1      0          4         2
##          6.2      0          2         2
##          6.3      0          3         6
##          6.4      0          2         5
##          6.5      0          1         4
##          6.6      0          2         0
##          6.7      0          3         5
##          6.8      0          1         2
##          6.9      0          1         3
##          7        0          1         0
##          7.1      0          0         1
##          7.2      0          0         3
##          7.3      0          0         1
##          7.4      0          0         1
##          7.6      0          0         1
##          7.7      0          0         4
##          7.9      0          0         1

Iskoristimo prethodno kreiran podatkovni okvir za drugačiji prikaz.

table(Turisti2$Drzava)
## 
##       Austria         China       Croatia        France       Ireland 
##             1             1             1             1             1 
##         Italy United States 
##             1             1
table(Turisti2$Drzava,Turisti2$Br_t_dol)
##                
##                 10926 30816 57668 93228 158606 169324.92
##   Austria           0     1     0     0      0         0
##   China             0     0     0     0      1         0
##   Croatia           0     0     1     0      0         0
##   France            0     0     0     0      0         0
##   Ireland           1     0     0     0      0         0
##   Italy             0     0     0     1      0         0
##   United States     0     0     0     0      0         1

Dakle, kroz ovih nekoliko primjera možete uočiti da funkcija table() koristi zadane varijable kao zaglavlja i predstupce, dok elementi tablice predstavljaju apsolutne frekvencije. U nekim će situacijama biti vrlo korisno koristiti tablice, osobito za kvalitativne varijable.

Postoji još jedna vrsta podataka s kojom je potrebno upoznati se (ili podsjetiti se) u uvodnom dijelu.

14.10 Prednosti i nedostaci rada s podatkovnim okvirima te najčešće greške

Prednosti podatkovnih okvira

Svestranost: podatkovni okviri podržavaju kolone različitih tipova podataka, što ih čini idealnim za rad s heterogenim podacima tipičnim za većinu stvarnih analitičkih zadataka.

Jednostavnost upotrebe: Sintaksa za manipulaciju podatkovnim okvirima je intuitivna, a R nudi bogat skup funkcija za njihovu obradu, učitavanje, čišćenje, transformaciju, agregaciju i vizualizaciju.

Integracija s alatima za analizu podataka: mnogi paketi u R-u dizajnirani su za rad s podatkovnim okvirima, uključujući popularne pakete za analizu podataka poput dplyr, tidyr i ggplot2.

Nedostaci podatkovnih okvira

Performanse i memorija

Podatkovni okviri nisu uvijek najefikasniji način za pohranu i obradu podataka, posebno kad je riječ o vrlo velikim skupovima podataka. U takvim slučajevima, alternativne strukture podataka kao što su tibbles (moderniji oblik podatkovnih okvira) ili data.table mogu pružiti bolje performanse.

Ograničenja dvodimenzionalnosti

Podatkovni okviri su prvenstveno dvodimenzionalne strukture. To ih može ograničiti u radu s višedimenzionalnim skupovima podataka.

Uobičajene greške

Pogrešan tip podataka u stupcima: ponekad, prilikom učitavanja ili transformacije podataka, stupci podatkovnog okvira mogu biti promijenjeni u pogrešan tip podataka, što može utjecati na analizu.

Neispravno indeksiranje i pristup elementima: razlika između pristupa podacima pomoću [ ], [[ ]], i $ može biti zbunjujuća. To dalje može dovesti do neispravnog odabira ili promjena podataka.

Neadekvatno upravljanje vrijednostima koje nedostaju: Vrijednosti koje nedostaju (NA) mogu uzrokovati probleme prilikom izvođenja statističkih analiza ili vizualizacije podataka.

Najčešća upotreba podatkovnih okvira

Eksploracijska analiza podataka: Podatkovni okviri su osnovni alat za istraživanje, obradu i sažimanje podataka.

Statistička analiza: Većina statističkih modela u R-u, poput linearnih i logističkih regresija, prirodno radi s podatkovnim okvirima.

Vizualizacija podataka: Alati za vizualizaciju, kao što je ggplot2, dizajnirani su za rad s podatkovnim okvirima, olakšavajući izradu složenih grafikona.

Učitavanje i manipulacija podacima: Podatkovni okviri su često korišten format za učitavanje, čišćenje i pripremu podataka prije dublje analize.