4 Identifikatori i vrijednosti
4.1 Osnovni tipovi podataka
Poznavanje osnovnih tipova podataka predstavlja temeljnu vještinu za rad u R-u iz nekoliko razloga. Prvo, tip podataka određuje kako će R pohraniti i rukovati unesenim podacima, što direktno utječe na točnost i efikasnost analize. Ako, na primjer, numerički podatak greškom označimo kao tekst (engl. character), nećemo moći provoditi matematičke operacije nad njim.
Razumijevanje tipova podataka važno je za ispravno učitavanje podataka, gdje R mora znati treba li neki stupac tretirati kao brojeve, tekst ili datume. Također, ovo znanje omogućuje otkrivanje i ispravljanje grešaka.
Mnoge statističke funkcije zahtijevaju specifične tipove podataka, a manipulacija podacima često uključuje njihove transformacije. Bez razumijevanja osnovnih tipova podataka, mogli bismo doći do pogrešnih zaključaka ili bi analiza mogla biti značajno otežana zbog neočekivanog ponašanja funkcija uslijed unosa pogrešnog tipa podataka.
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 |
Ova tablica prikazuje šest osnovnih tipova podataka u R-u, njihove primjere i kratke opise. Tip double koristi se za realne brojeve i najčešći je numerički tip u R-u, omogućujući precizne decimalne kalkulacije. Integer predstavlja cijele brojeve. Tip character obuhvaća sve tekstualne podatke, uključujući slova, oznake i brojeve koji se tretiraju kao tekst. Logical tip je posebno važan za uvjetno izvršavanje koda i pohranu true/false vrijednosti, dok complex tip omogućuje rad s kompleksnim brojevima koji su važni u određenim matematičkim i inženjerskim primjenama. Raw tip se rjeđe koristi i služi za pohranu sirovih (binarnih) podataka.
Provjera vrste podataka može se izvršiti pomoću typeof()
, ili funkcijama is (is.integer()
, is.character()
, itd.) typeof()
naredba povratno daje naziv tipa podataka (double, integer, itd.), dok je naredba koja sadrži is logička i povratno daje TRUE ili FALSE.
Tip podataka moguće je promijeniti funkcijom koja sadrži as (as.integer()
, as.double()
, as.character()
, itd.). Ipak, preporučuje se ne koristiti promjenu tipa podataka prije nego se izvrši detaljni uvid u podatke. Naime, može se dogoditi (i događa se) da niz podataka sadrži pogrešno zapisane vrijednosti, na primjer, pojavljuje se „o“ na mjestu gdje bi trebala biti „0“, stoga je tip podataka identificiran kao character umjesto integer li double. Sama promjena tipa podataka neće riješiti ovaj problem, nego podatke treba provjeriti i urediti prije takve promjene.
4.2 Nazivi
Pri kreiranju podataka različitih struktura, potrebno im je dodijeliti nazive. Ponekad će to biti slova, na primjer, a, b, x, y i slično. No, ako se bavite s većim brojem varijabli, onda će im biti potrebno dodijeliti nazive vezane uz pojam. Pritom se preporučuje:
- izbjegavati dijakritike (č, ć, đ, dž, š i ž)
- naziv ne može sadržavati razmak
- umjesto razmaka, u nazivu ne koristiti crticu/povlaku ( - ), nego donju povlaku ( _ ), na primjer: visina_cm
- alternativno, naziv se može zapisati kao jedna riječ, na primjer, VisinaCm ili visinacm
- druga alternativa je koristiti točke: visina.cm
Nadalje, R je osjetljiv na velika i mala slova. To znači da Visina_cm \(\neq\) visina.cm. To ujedno znači da Visina.cm i visina.cm mogu biti dvije zasebne, različite varijable. No, važno je obratiti pozornost na to pri pozivanju varijabli, osobito u slučaju dobivanja poruka upozorenja kao što su ‘Error: object ’Visina.cm’ not found’ ili ‘#> Error in eval(expr, envir, enclos): object ’Visina.cm’ not found’.
Također, poželjno je izbjegavati nazive koje su vezani uz već postojeće funkcije u R-u. Postoji nekoliko naziva koje novi korisnici R-a često pokušavaju koristiti za svoje varijable ili objekte, ne znajući da su to već postojeće funkcije u R-u. Najčešće se radi o intuitivnim imenima poput c, t, data, mean, summary, max, min, sum, fun, df, table, array, matrix, list ili vector. Ovi nazivi su zapravo rezervirani jer predstavljaju važne funkcije u R-u - c()
je funkcija za kreiranje vektora, t()
za transponiranje matrice, mean()
za računanje prosjeka, i tako dalje. Kad pokušamo koristiti ova imena za vlastite objekte, to može dovesti do zbunjujućih grešaka i nepredvidljivog ponašanja programa. Zato je važno od početka usvojiti naviku davanja jedinstvenih, opisnih imena svojim objektima koja ne interferiraju s ugrađenim funkcijama R-a. Na primjer, umjesto data možemo koristiti podaci ili neki specifičniji naziv poput anketa_podaci, a umjesto mean možemo koristiti prosjek.
4.3 Kreiranje varijabli
Iako će se najčešće koristiti varijable iz učitanog podatkovnog okvira, korisno je znati da se varijable mogu i izraditi pridruživanjem vrijednosti. Na primjer, ako želimo kreirati varijablu a koja sadrži vrijednost 1, to je moguće napraviti na sljedeći način:
> a <- 1
> a
## [1] 1
Iako je kreiranje varijabli korisno, podatke je češće nužno i važnije definirati s obzirom na njihovu strukturu. Sjetite se i napomene kod programskih paketa, često će programski paketi iziskivati točno određen tip i strukturu podataka.
No, varijable će češće sadržavati više opažanja, to jest podataka. Onda to može izgledati ovako:
> a <- c(1, 2, 3, 4, 5)
> a
## [1] 1 2 3 4 5
Kreiranje varijabli je temeljna operacija u R-u koja omogućava pohranu podataka za kasniju upotrebu. Međutim, postoji nekoliko uobičajenih grešaka koje korisnici čine prilikom kreiranja varijabli:
Upotreba nedozvoljenih znakova u imenima varijabli: R ne dopušta upotrebu određenih znakova u imenima varijabli, kao što su razmaci i znakovi interpunkcije (npr. !, ?, #, %, &). Osim toga, prvi znak ne može biti broj. Greška u korištenju ovih znakova može dovesti do sintaktičkih grešaka.
Prepisivanje ugrađenih funkcija: Ako korisnik dodjeljuje varijabli naziv koji je već rezerviran za neku od R-ovih ugrađenih funkcija (npr. c, mean, sum), to može dovesti do neočekivanih rezultata ili grešaka u izvođenju koda. Uvijek je dobro provjeriti koristi li se ime koje je već rezervirano. To možete učiniti tako što ćete naziv započeti pisati u skripti ili chunk-u koda. Čim počnete pisati, RStudio nagađa koju funkciju želite upisati i nudi imena u lebdećem izborniku. Ako se u tom izborniku ponudi naziv kojeg ste namjeravali dati varijabli, odaberite drugi naziv.
Varijable koje nisu prethodno inicijalizirane: Pristup varijablama koje nisu prethodno inicijalizirane ili definirane rezultira greškom (pozivanje varijable koja ne postoji). Pokušaj pristupa varijabli koja nije definirana generira poruku o grešci.
Nejasna namjena varijabli zbog lošeg imenovanja: Iako ne generira tehničku pogrešku, neprecizno imenovanje varijabli (npr. korištenje imena poput x, temp, ili var1) može otežati razumijevanje koda. Takav će se pristup koristiti samo za pomoćne izračune koje korisnik nema namjeru ponavljati. Dobra je praksa koristiti opisne nazive koji jasno odražavaju namjenu varijable.
Neispravno pretpostavljena tipizacija: Ponekad korisnici nenamjerno kreiraju pogrešan tip podatka varijable. Na primjer, pridruživanjem brojevnih vrijednosti navodnicima (
a <- “1”
) varijabla a postaje znakovni niz umjesto numeričke vrijednosti. To može dovesti do naknadnih grešaka u matematičkim operacijama i analizi podataka.Upotreba neodgovarajućeg pridruživanja: Iako su
<-
i=
u većini slučajeva zamjenjivi pri pridruživanju vrijednosti, postoje situacije gdje je poželjno koristiti jedno umjesto drugog. Na primjer, <- se tradicionalno koristi za pridruživanje varijabli u globalnom prostoru imena, dok se = u pravilu koristi unutar funkcija za specifikaciju argumenata.Pogreška u vektorizaciji: Pri pridruživanju više vrijednosti varijabli bez korištenja funkcije
c()
može doći do greške. Ispravan način za kreiranje vektora je upotreba funkcijec()
, kao što je prikazano u primjeru. To nas ujedno vodi do sljedeće teme i kreiranja vektora.