Tüüpilised andmete saamise viisid on:
Sellel kursusel tegeleme põhiliselt küsitluste ja andmebaaside struktureeritud andmetega, mida hoitakse tabelkujul ning mille ridades olevaid vaatlusi (ingl observation) iseloomustatakse teatud tulpades asuvate tunnuste (ingl variable) abil. Tabeli lahtrites omakorda on iga vaatluse iga tunnuse väärtus (ingl value).
Wickham, Çetinkaya-Rundel, Grolemund (2023). R for Data Science (2e)
Näiteks võime iseloomustada inimesi nende pikkuse, kaalu, silmavärvi, hariduse jpm tunnuste põhjal. Sõnu jällegi võib iseloomustada nende graafilise pikkuse, silpide arvu, välte, tähendusklassi, sõnaliigi, sageduse jms tunnuste põhjal.
Tunnused/muutujad aitavad niisiis andmeid kirjeldada
ja jagunevad uuritavateks/sõltuvateks tunnusteks (see,
mida uurime ja mille kohta tahame midagi väita) ja
seletavateks/sõltumatuteks tunnusteks (need, mille
kaudu uuritavat tunnust iseloomustame). Inglise keeles viidatakse neile
sageli vastavalt kui dependent variable / response
(variable) / outcome (variable) ja independent
variable / predictor (variable) / explanatory
variable.
Näiteks võime uuritava tunnusena käsitleda inimese kaalu ning
seletavate tunnustena inimese pikkust, füüsilist aktiivsust (nt
minutites nädalas), unetundide arvu jms. Sõnade puhul võib meil olla
näiteks hüpotees, et sagedasemad sõnad on lühemad, mispuhul saame
uuritavaks tunnuseks võtta sõna pikkuse ja seletavaks tunnuseks sõna
sageduse. Kas võiks ka vastupidi?
Mis on järgmistes näidetes uuritav ja mis seletav tunnus?
See, et andmeanalüüs on kvantitatiivne, ei tähenda, et kõik andmed ise peaksid tingimata olema arvulised. Laiemalt jagunevadki tunnused kvalitatiivseteks ja kvantitatiivseteks.
Eri skaalal tunnused võimaldavad erineval hulgal tehteid.
Tunnuseid on võimalik teisendada ühest klassist teise, ent
ainult suunal suhteskaala -> nominaalskaala ehk ratio ->
nominal!
Näiteks sõnasagedus on intervalliskaala tunnus, aga võime sõnad jagada
ka klassidesse harvad, keskmise sagedusega ja
sagedased, mispuhul on tegemist järjestusskaala tunnusega.
Vastupidi ei ole aga võimalik tunnuseid teisendada.
Küsitluses, millele vastasid, olid järgmised küsimused. Millised neist on kvalitatiivsed ja millised kvantitatiivsed? Millisel skaalal tunnused on?
##
## Q2 "Mis on sinu sünniaasta?"
## Q3 "Millisel õppekaval õpid?"
## Q4 "Mitu aastat oled käinud ülikoolis?"
## Q5 "Kas sul on varasemaid kogemusi kvantitatiivsete meetoditega? "
## Q6 "Kirjelda oma programmeerimisoskusi (ükskõik mis keeles)"
## Q7 "Kui tõenäoline on, et läbid selle kursuse?"
## Q8 "Kohv või tee?"
## Q9 "Hinda oma söögitegemisoskusi"
## Q10 "Vali loom"
Saame R-is töötada erinevat tüüpi andmetega. Suhte- ja intervallskaala väärtused on tüüpiliselt arvud, nominaal- ja järjestusskaala väärtused on tüüpiliselt tekst. Viimaseid tuleb R-is kirjutada jutumärkide vahele.
## [1] 68
## [1] 2.464695
## [1] "kass"
## [1] "kass ja koer"
Võime toimetada R-is niisiis küll ka konkreetsete arvude või
tekstijärjenditega, aga enamasti tekib meil vajadus neid väärtusi või
erinevate tehete tulemusi hilisemaks kasutamiseks talletada.
Objektiks võimegi nimetada elementi, mis
talletab mingit tüüpi andmeid (teksti/tekste, arve,
tabeleid, maatrikseid jne). Objektile saab väärtusi omistada kas
võrdusmärgiga =
või noolekesega <-
. Sellel
kursusel eelistame noolekest, et selgemalt eristada objektidele ja
funktsiooni argumentidele väärtuste omistamist.
## Error in 68 <- b: invalid (do_set) left-hand side to assignment
Sellisel juhul ilmub objekt R-i keskkonda (Environment paneeli), aga konsooli teda ei trükita. Konsooli trükkimiseks saab kasutada lihtsalt objekti nime.
## [1] 23.52941
Objektide kasutamine teeb esiteks meie koodi paremini loetavaks, kuna objektidele saab anda tähenduslikke nimesid. Piiranguks nimetamisel on vaid see, et objekti nimi ei tohi alata numbriga ega tohi sisaldada tühikuid ega kirjavahemärke peale alakriipsu ja punkti.
pikkus_m <- 1.7 # loome objekti, mille väärtus on 1.7
kaal_kg <- 68 # loome objekti, mille väärtus on 68
KMI <- kaal_kg/(pikkus_m ^ 2) # loome objekti, mille väärtus on objekti 'kaal_kg' väärtus jagatud objekti 'pikkus_m' väärtuse ruuduga
KMI # trükime objekti 'KMI' väärtuse konsooli
## [1] 23.52941
Teiseks saab üht ja sama objekti koodis korduvalt kasutada ja selle väärtusi (nt vastavalt kasutaja sisendile) muuta. Sellest saab paremini aru, kui hakkame andmetabelitega tegelema.
Igat objekti iseloomustavad tüüp ja klass.
Objektitüüp (vahel nimetatakse ka andmetüübiks) ütlebki meile seda, mis sorti andmetega on tegemist. Põhilised objektitüübid on R-is niisiis
123.456
või 1234
"Tere!"
, "Number 2"
,
"123.456"
TRUE
ja FALSE
Arvud (numeric), nagu oleme juba näinud, kirjutatakse lihtsalt numbritega. Arvulise väärtusega muutujatega saab teha matemaatilisi tehteid (liita-lahutada jne).
## [1] 4
arv1 <- 4 # objektile 'arv1' omistatakse väärtus 4, aga midagi välja ei trükita
arv2 <- 5
arv3 <- sqrt((arv1 + arv2)^3) # ^-märk tähistab siin astendamist, sqrt() on ruutjuure leidmise funktsioon
arv3 # see trükitakse välja
## [1] 27
Arvud võivad omakorda jaguneda täisarvudeks (integer
) ja
murdarvudeks/ujukomaarvudeks (double
). Murdarvus
kasutatakse R-is vaikimisi koma asemel punkti (nt 2.7
,
mitte 2,7
)!
Tekst (character) tuleb kirjutada jutumärkides (kas ühe- või kahekordsetes). Ka numbreid võib esitada tekstina. Tekstiga matemaatilisi tehteid teha ei saa, küll aga saab eri funktsioonide abil näiteks tekstiosi omavahel kombineerida või tekstijada (ingl string) pikkust pärida.
## [1] "Tartu"
pärisnimi <- "Tartu" # objektile 'pärisnimi' omistatakse väärtus "Tartu", aga midagi välja ei trükita
üldnimi <- 'ülikool' # ühekordsed jutumärgid töötavad samaväärselt
arv <- "104" # objektile 'arv' omistatakse tekstiväärtus "104"
paste(pärisnimi, üldnimi, arv, sep= " ") # kleebime kolme objekti väärtused kokku (paste = kleebi)
## [1] "Tartu ülikool 104"
## [1] 7
## [1] "kool"
## Error in pärisnimi + üldnimi: non-numeric argument to binary operator
## Error in arv^2: non-numeric argument to binary operator
Küsimus R-i testist
Tõeväärtus (logical) on binaarne muutuja, millel on kaks võimalikku väärtust: TRUE ja FALSE, need sisestatakse suurtäheliselt ilma jutumärkideta, töötab ka ainult esitähega T/F.
Milleks tõeväärtusi vaja on?
Tõeväärtused saame vastuseks, kui testime, kas mingi tingimus on
täidetud. Tingimuste kontrolli läheb meil vaja siis, kui meil on näiteks
suuremast andmestikust vaja leida kindlatele tunnustele vastav alamosa
(näiteks võtta tabelist välja ainult read, kus tulbas Sugu
on väärtus mees, või read, kus tulbas Vanus
on
suurem väärtus kui 50). Tõeväärtustega saab ka matemaatilisi tehteid
teha.
üks <- 1 # objektile 'üks' omistatakse väärtus 1, midagi välja ei trükita
kaks <- 2
üks > kaks # Kas objekti 'üks' väärtus on suurem kui objekti 'kaks' väärtus?
## [1] FALSE
## [1] TRUE
## [1] FALSE
## [1] TRUE
## [1] TRUE
## [1] 1
## [1] 400
Lisaks on R-is oluline tundmatu väärtus ehk NA (not applicable, not available, no answer). Kõigi objektitüüpide hulgas võib olla tundmatuid väärtusi, näiteks kui me ei tea kõikide oma andmestiku katseisikute vanuseid, mõni mõõtmistulemus on läinud untsu või mõni kategooria pole üldse kõikide vaatluste puhul relevantne. Tundmatu väärtusega tehteid tehes on tulemuseks samuti tundmatu väärtus.
## [1] NA
## [1] TRUE
Objektide tüüpi saab küsida käsuga
mode()
või
class()
.
## [1] "numeric"
## [1] "numeric"
## [1] "character"
## [1] "character"
## [1] "logical"
## [1] "logical"
Samuti võib küsida, kas objekt on mingit konkreetset tüüpi.
## [1] TRUE
## [1] TRUE
## [1] TRUE
Vahel kodeeritakse andmestikes tundmatud väärtused mingi kindla
väärtuse abil, nt -99
, .
vmt. Sel juhul ei tea
R vaikimisi, et tegemist on erilise väärtusega, ning seda tuleb andmeid
sisse lugedes talle eraldi öelda.
Loo üks objekt nimi
, millele omistad väärtuseks oma
eesnime, teine objekt vanus
, millele omistad väärtuseks oma
vanuse, ning kolmas objekt hinnang
, mis võib saada
väärtuseks ainult kas sõna juba või sõna alles.
Jooksuta seejärel allolevat paste()
käsku, et lasta R-il
sind sobivalt tutvustada.
Objektiklass tähistab andmestruktuuri ehk seda, kuidas andmed objektis on korrastatud. Objektiklasse on küll ka rohkem ja spetsiifilisemaid, aga esialgu võiks meil tulla tegemist 4 põhilise klassiga:
1
, 1:10
, c(1:10)
,
c(1,400,800)
, "Tere!"
,
c("Tere!", "Head aega!")
, TRUE
,
c(TRUE, FALSE, TRUE, TRUE)
,
vector("character", length = 10)
list(1:10)
, list(1:10, 10:5)
,
list(1:10, "a", list(c(TRUE, FALSE), TRUE))
matrix(1:9)
, matrix(1:9, nrow = 3)
,
matrix(c(TRUE, TRUE, FALSE, FALSE), ncol = 2)
data.frame(nimi = c("Anu", "Mart", "Sipsik"), pikkus = c(145, 160, 30), kaal = c(40, 58, 2))
,
as.data.frame(matrix(1:9, nrow = 3))
Vektorid on ühemõõtmelised objektid, mis võivad
sisaldada ainult üht tüüpi elemente, nt ainult arve, ainult teksti või
ainult tõeväärtuseid.
Maatriksid on kahemõõtmelised (= ridade ja tulpadega)
objektid, mis võivad sisaldada ainult üht tüüpi elemente, nt ainult
arve, ainult teksti või ainult tõeväärtuseid.
Tabelid on kahemõõtmelised objektid, mis võivad
veergudes sisaldada erinevat tüüpi elemente (nt tekstivektoreid,
arvuvektoreid, tõeväärtusvektoreid).
Listid on komplekssed, struktureerimata objektid, mis
võivad sisaldada erinevat tüüpi elemente, sh tabeleid ja teisi liste,
funktsioone jm.
R-i objektiklassid (https://web.itu.edu.tr/~tokerem/r_language.html)
Kõige rohkem pöörame sellel kursusel tähelepanu just vektoritele ja
tabelitele. Tabelite (ja maatriksite) puhul on oluline ära märkida, et
R-is peaks tabel olema kindlasti sümmeetriline, st igas
reas on ühepalju tulpasid ja igas tulbas ühepalju ridu (nn tidy
andmestruktuur). Selline Exceli-tüüpi tabel, kus ühe ruudulise lehe peal
võib olla mitu tabelit, on R-ile raskesti seeditav. Ka erinevad
stiliseeritud ja pesastatud tabelid, kus ühes lahtris toimub omakorda
jagunemine väiksemateks lahtriteks, võivad tekitada omajagu tüli (vt ka
nt https://www.r-bloggers.com/2020/05/what-it-takes-to-tidy-census-data/).
Keerulisema struktuuriga objektidega, nagu on R-is list, me täna ei
tegele, aga näeme neid rohkem siis, kui hakkame mudelite väljundeid
vaatama.
R-i põhiline objektiklass on vektor. Kõik teised objektid koosnevad vektoritest, st nende osi saab käsitleda vektoritena.
Vektor on ühemõõtmeline objekt, millel võib olla üks või enam üht tüüpi väärtust. Kõige lihtsam vektor koosnebki ainult ühest elemendist, st tal on üks väärtus. Näiteks kui sisestada üks arv või üks sõna, siis see on vektor, millel on üks element.
## [1] 4
## [1] 1
Vektoris võib olla ka rohkem kui üks väärtus. Funktsioon
c()
(concatenate) kombineerib
üksikud väärtused kokku vektoriks (erinevate väärtuste loendiks).
Järjestikuste arvude jada saab luua ka kooloniga.
Kui mõelda pisut etteruttavalt andmetabelite peale, siis põhimõtteliselt iga andmetabeli tulp, mis sisaldab üksikute vaatluste konkreetse tunnuse väärtusi (nt vanuseid), on sisuliselt üks vektor.
Proovi nüüd nende loodud vektorite peal funktsiooni
length()
, mis ütleb, mitu väärtust vektoris
on.
Ühes vektoris on kõik elemendid sama tüüpi (nt
ainult arvud, ainult tekst, ainult loogilised väärtused). Vektori tüüpi
saab jällegi küsida käsuga mode()
või
class()
.
## [1] "numeric"
Kui püüda samasse vektorisse kokku panna eri tüüpe elemente, siis arvude ja loogiliste väärtuste kombineerimisel teisendatakse loogilised väärtused arvudeks (0 või 1), nende kombineerimisel tekstiga omakorda teisendatakse kõik elemendid tekstiks.
Küsimused R-i testist
Käsk c()
võib omavahel kokku kombineerida mitte ainult
mitu üksikut väärtust, vaid ka mitu mitmest elemendist koosnevat
vektorit.
## [1] 3 6 8 11 24 1 2 3 4 5 20 21 22 23 24 25 26 27 28 29 30
## [1] 21
Vektoritega tehete tegemisel rakendatakse tehet (nt liitmine) elementide kaupa. Kui vektorid on eri pikkusega, siis lühemat vektorit taaskasutatakse.
## [1] 4 8 11 15 29
## [1] 3 0 9 0 15 0 21 0 27 0
Ja kui pikem vektor ei jagu täpselt lühemaga, siis lühemat küll taaskasutatakse nii, et kõik pikema vektori elemendid saaksid endale paarilise, aga kõik lühema vektori elemendid ei saa võrdselt kordusi, mille kohta antakse ka hoiatus.
## Warning in 1:10 * c(3, 0, 1): longer object length is not a multiple of shorter
## object length
## [1] 3 0 3 12 0 6 21 0 9 30
Vektorist saab üksiku väärtuse või mingi osa kätte indeksite abil. Indeksid on tegelikult ise ka vektorid. Indeks kirjutatakse vektori nime järele nurksulgudesse:
tekstivektor2 <- c("kala", "kana", "kaja", "kava", "kaba", "kada", "kaka", "kaua", "kama")
tekstivektor2[3] # vektori kolmas element
## [1] "kaja"
## [1] "kana" "kaja" "kava"
## [1] "kaba" "kala"
Küsimus R-i testist
Omamoodi indeksitena saab kasutada ka võrratusi, mispuhul indeksitena kasutatav vektor on tõeväärtuste vektor.
## [1] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
tekstivektor2[tekstivektor2 == "kana"] # küsi vektorist ainult neid elemente, mis võrduvad sõnaga "kana"
## [1] "kana"
## [1] FALSE FALSE FALSE TRUE TRUE
## [1] 11 24
Vektori eritüüp on faktor. Faktor (factor) on piiratud hulga väärtustega nominaalne vektor.
Miks faktoreid vaja on?
1) faktori väärtuseid saab järjestada, see on oluline näiteks
järjestusskaalaga muutujate puhul (“vana” > “keskealine” >
“noor”);
2) on arvutuslikult ökonoomsem, sest ehkki faktori taseme
(level) nimi võib koosneda mitmest tähemärgist (nt
noor, keskealine), on iga tase/klass tegelikult
kodeeritud unikaalse arvuga (nt 1, 2).
Faktori tasemed märgivad faktori unikaalseid väärtusi. Faktori
tasemed on alati mingil moel järjestatud, ent vaikimisi tähestiku
järjekorras või arvude puhul väiksemast suuremani. Faktori tasemeid saab
küsida käsuga levels()
.
haridus <- factor(c("põhi", "kesk", "põhi", "kesk", "kõrg"))
arvud <- factor(c(9,3,6,2,1,1,2,2))
levels(haridus)
## [1] "kesk" "kõrg" "põhi"
## [1] "1" "2" "3" "6" "9"
Küsimus R-i testist
Faktoreid saab ümber järjestada näiteks
factor()
-funktsioonis argumendi levels
abil.
haridus <- factor(haridus, levels = c("põhi", "kesk", "kõrg"))
arvud <- factor(arvud, levels = c(9,6,3,2,1))
levels(haridus)
## [1] "põhi" "kesk" "kõrg"
## [1] "9" "6" "3" "2" "1"
Kui vektorite puhul annavad käsud mode()
ja
class()
sama väljundi, siis keerukamate andmestruktuuride
puhul näeme nende kasutuses juba erinevusi. Näiteks faktorite puhul
ütleb class()
seda, milline on andmestruktuur,
mode()
aga seda, mis tüüpi andmetest see struktuur
koosneb.
## [1] "factor"
## [1] "numeric"
Eraldi faktori liik on järjestatud faktor (ordered factor), mille puhul on eksplitsiitne ka see, et iga järgmine faktori tase on eelmisest suurem/kõrgem/rohkem/tähtsam.
## [1] põhi kesk põhi kesk kõrg
## Levels: põhi < kesk < kõrg
## [1] "ordered" "factor"
## [1] "numeric"
Tabel on kahemõõtmeline objekt: on read ja veerud, aga oluline on see, et igas reas on sama palju veerge ja vastupidi, ehkki lahtrites võib olla ka puuduvaid väärtusi.
Siin kursusel kasutame kõige rohkem tabeleid, mille klass on data.frame, mingites olukordades ka maatriksit (matrix). Maatriksi ja data.frame’i vahe R-is on see, et maatriksis saab olla ainult ühte tüüpi andmeid (nt ainult arvud), aga data.frame’is võib iga tulp olla erinevat tüüpi.
matrix(20:28, # arvud, mis tabelisse lähevad
ncol = 3, # tulpade arv, millesse arvud jagatakse
dimnames = list(c("1", "2", "3"), # reanimed
c("Arvud1", "Arvud2", "Arvud3"))) # tulbanimed
## Arvud1 Arvud2 Arvud3
## 1 20 23 26
## 2 21 24 27
## 3 22 25 28
data.frame(Arvud = c(20,21,22), # esimese tulba nimi ja väärtused
Tekst = c("a", "b", "c"), # teise tulba nimi ja väärtused
Tõeväärtused = c(TRUE, FALSE, FALSE)) # kolmanda tulba nimi ja väärtused
## Arvud Tekst Tõeväärtused
## 1 20 a TRUE
## 2 21 b FALSE
## 3 22 c FALSE
Nagu näeme, saab R-is andmeid ka vektoritest
data.frame()
käsuga tabeliks kokku panna, aga üldjuhul
saame data.frame’i kujulise objekti nii, et loeme tabelina
struktureeritud andmeid mingist failist.
Kui andmestik on R-is korrastatud ja RData formaadis
salvestatud, siis neid andmestikke saab avada käsuga
load()
. Näiteks sellisel kujul on
Moodle’is failis kysimustik_2025.RData korrastatud vastused
küsimustikule, mida eelmises praktikumis täitsite. Lisaks on seal ka
varasemate aastate vastused. Laadige RData andmestik alla ja pange see
oma kursuse andmestike kausta (nt kausta nimega
andmestikud
, andmed
, data
vmt),
muutke vastavalt ära ka faili teekonna nimi (nt
andmestikud/kysimustik_2025.RData
,
andmed/kysimustik_2025.RData
,
data/kysimustik_2025.RData
).
Selle käsurea rakendamisest justkui ei juhtugi midagi, aga töölauale
tekkis objekt nimega kysimustik, mille klassiks on
data.frame
.
## [1] "data.frame"
Nüüd oleks vaja saada natuke aimu, mida see tabel endast kujutab. Selleks proovime käske/funktsioone:
dim()
View()
head()
tail()
summary()
str()
dim(kysimustik) # mitu rida ja mitu tulpa on tabelis?
View(kysimustik) # vaata tervet andmetabelit
head(kysimustik) # näita tabeli esimesi ridu
tail(kysimustik) # näita tabeli viimaseid ridu
summary(kysimustik) # näita ülevaadet tabeli tunnustest
str(kysimustik) # näita tabeli struktuuri
Kui andmetabel ei ole RData-formaadis (enamasti ei ole), saab selle
sisselugemiseks kasutada paljusid muid funktsioone, mis algavad üldjuhul
sõnaga read
.
csv- või txt-formaadis tabeleid
saab lugeda näiteks järgmiste käskudega, mis erinevad põhiliselt selle
poolest, millised on erinevate argumentide (nt header
,
sep
) vaikeväärtused:
kysimustik_csv <- read.table("data/kysimustik_2025.csv", header = TRUE, sep = "\t", encoding = "UTF-8")
kysimustik_csv <- read.delim("data/kysimustik_2025.csv", encoding = "UTF-8")
kysimustik_csv <- read.csv("data/kysimustik_2025.csv", sep = "\t", encoding = "UTF-8")
kysimustik_csv <- read.csv2("data/kysimustik_2025.csv", sep = "\t", encoding = "UTF-8")
Failil kysimustik_2025.csv
on tulbanimedega päis
(header
), tulpasid eraldavad tabulaatorid (\t
)
ning faili kodeering on UTF-8. Kuna funktsioonide vaikeväärtused on
erinevad (näiteks read.table()
eeldab vaikimisi, et tabelil
ei ole tulbanimesid), peame eri funktsioonidega andmeid sisse lugedes
täpsustama erinevaid asju, vastavalt oma andmestiku struktuurile.
Küsimused R-i testist
R-i saab erinevate pakettide abil laadida ka muus formaadis faile, näiteks Exceli, SPSSi, SASi, STATA, JSONi või XMLi faile.
# Exceli failid
# install.packages("readxl")
library(readxl)
kysimustik_xlsx <- read_excel("data/kysimustik_2025.xlsx")
# SPSSi, SASi, STATA failid
# install.packages("haven")
library(haven)
kysimustik_sav <- read_sav("data/kysimustik_2025.sav") # SPSS
kysimustik_sas7bdat <- read_sas("data/kysimustik_2025.sas7bdat") # SAS
kysimustik_dta <- read_stata("data/kysimustik_2025.dta") # STATA
# JSONi fail
# install.packages("jsonlite")
library(jsonlite)
kysimustik_json <- fromJSON("data/kysimustik_2025.json")
# XMLi fail
# install.packages("xml2")
library(xml2)
kysimustik_xml <- as.data.frame(read_xml("data/kysimustik_2025.xml"))
Tabelist saab selle osi pärida samamoodi indeksite abil nagu
vektorist, aga nüüd peab arvestama, et nurksulgudes tuleb märkida
nii ridade kui ka veergude indeksid.
Ridade indekseid täpsustame kantsulgude sees enne koma ja
tulpade indekseid pärast koma.
kysimustik[1,] # küsimustiku 1. rida
kysimustik[c(1,3,5,7),] # küsimustiku 1., 3., 5. ja 7. rida
kysimustik[,5] # küsimustiku 5. tulp
kysimustik[,1:2] # küsimustiku 1. ja 2. tulp
kysimustik[3, 5] # küsimustiku 3. rea 5. tulba väärtus
kysimustik[1:10, 5] # küsimustiku esimese 10 rea 5. tulba väärtused
Kui me tahame tabelist tulbanime järgi välja võtta ühe terve tulba, siis seda saab ka nii:
## [1] Kohv Kohv Kohv Kohv Kohv Kohv Tee Tee Kohv Kohv Tee Tee Tee Tee Tee
## [16] Tee Kohv Tee Tee Kohv Tee Kohv Kohv Tee Kohv Tee Kohv Tee Tee Tee
## [31] Tee Tee Kohv Tee Kohv Tee Kohv Tee Kohv Kohv Kohv Tee Kohv Kohv Tee
## [46] Tee Kohv Kohv Kohv Kohv Tee Tee Kohv Tee Kohv Kohv Kohv Tee Kohv Kohv
## [61] Kohv Kohv Tee Tee Kohv Kohv Tee Kohv Kohv Kohv Kohv Kohv Kohv Tee Kohv
## [76] Kohv Kohv Kohv Kohv Kohv Tee Kohv Tee Kohv Kohv Tee Kohv Kohv Tee Kohv
## [91] Kohv Tee Tee Tee Kohv Tee Kohv Kohv Tee Kohv Tee Kohv Tee Kohv Kohv
## [106] Kohv Kohv Kohv Tee Kohv Tee Tee Kohv Tee Kohv Tee Tee Kohv Tee Kohv
## [121] Tee Tee Kohv Kohv Tee Tee
## Levels: Kohv Tee
## [1] Kohv Kohv Kohv Kohv Kohv Kohv Tee Tee Kohv Kohv Tee Tee Tee Tee Tee
## [16] Tee Kohv Tee Tee Kohv Tee Kohv Kohv Tee Kohv Tee Kohv Tee Tee Tee
## [31] Tee Tee Kohv Tee Kohv Tee Kohv Tee Kohv Kohv Kohv Tee Kohv Kohv Tee
## [46] Tee Kohv Kohv Kohv Kohv Tee Tee Kohv Tee Kohv Kohv Kohv Tee Kohv Kohv
## [61] Kohv Kohv Tee Tee Kohv Kohv Tee Kohv Kohv Kohv Kohv Kohv Kohv Tee Kohv
## [76] Kohv Kohv Kohv Kohv Kohv Tee Kohv Tee Kohv Kohv Tee Kohv Kohv Tee Kohv
## [91] Kohv Tee Tee Tee Kohv Tee Kohv Kohv Tee Kohv Tee Kohv Tee Kohv Kohv
## [106] Kohv Kohv Kohv Tee Kohv Tee Tee Kohv Tee Kohv Tee Tee Kohv Tee Kohv
## [121] Tee Tee Kohv Kohv Tee Tee
## Levels: Kohv Tee
See üks tulp on tegelikult ka vektor. Tulba või üksikud väärtused saab suunata ka eraldi uude objekti, tulba väärtusi omakorda indeksite abil välja võtta jne.
Nii nagu vektoreid võib ka tabelitest elemente (ridu või tulpasid) välja võtta ka võrratuste abil.
## synniaasta oppekava kaua_opid kogemused_kvant
## 110 2003 inglise keel 3 Jah
## 112 2003 skandinavistika 2 Jah
## 82 2003 inglise keel 3 Jah
## 102 2003 eesti ja soome-ugri keeleteadus 2 Jah
## 132 2003 inglise keel 3 Ei
## 152 2003 romanistika 3 Jah
## 172 2003 inglise keel 3 Jah
## 193 2003 inglise keel 3 Jah
## 202 2004 romanistika 1 Ei
## programmeerimisoskus kursuse_labimine lemmikjook soogitegemisoskus
## 110 Saan mingid asjad tehtud 4 Tee 4
## 112 Saan mingid asjad tehtud 5 Kohv 3
## 82 Saan mingid asjad tehtud 5 Tee 4
## 102 Saan mingid asjad tehtud 5 Tee 3
## 132 Saan mingid asjad tehtud 5 Tee 3
## 152 Saan mingid asjad tehtud 5 Tee 3
## 172 Saan mingid asjad tehtud 5 Tee 5
## 193 Saan mingid asjad tehtud 4 Kohv 4
## 202 Puuduvad 4 Kohv 4
## lemmikloom aasta
## 110 Koer 2024
## 112 Koer 2025
## 82 Glaucus atlanticus 2025
## 102 Kaelkirjak 2025
## 132 Koer 2025
## 152 Kaelkirjak 2025
## 172 Koer 2025
## 193 Koer 2025
## 202 Koer 2025
# vektor
kysimustik[kysimustik$kogemused_kvant == "Jah",]$kaua_opid # "kaua_opid" tulba väärtused ridadel, kus "kogemused_kvant" väärtus on "Jah"
## [1] 10 6 5 25 9 4 6 4 5 8 12 1 4 7 8 6 15 7 10 4 16 3 5 5 13
## [26] 8 2 2 1 2 3 13 3 1 7 1 5 3 4 2 7 3 13 3 5 13 10 6 18 13
## [51] 14 1 7 8 2 3 3 3 3 8 4 3 15 7 2 3 7 3 8 4 2 3 5 8 5
## [76] 4 3 3 3 2 3 6 3 3 3 8
kysimustik
välja mõni
intervalliskaalal tunnus/tulp (kasuta arvulist indeksit).kysimustik
välja sama tulp tulbanime
järgi (kasuta $-märki).kysimustik
tulp
kogemused_kvant
eraldi objekti nimega
kogemused
. Mis tüüpi objekti saad?kogemused
tasemed nii, et esimene tase
oleks “Jah” ja teine “Ei”.kogemused
väärtus “Võib-olla” (kasuta
funktsiooni c()
). Mis juhtub?Kui sul on tunne, et vajad pikemat sissejuhatust R-i alustesse, siis vaata sissejuhatava kursuse materjale või uuri R-i paketti Swirl.
Järgmises praktikumis arvulised andmed ja nende visualiseerimine.
c()
- concatenate, kombineerib üksikud
väärtused või mitmest elemendist koosnevad vektorid üheks vektoriksclass()
- küsib objekti andmestruktuuri/andmetüüpidata.frame()
- kombineerib üksikud vektorid või
maatriksid kokku andmetabeliksdim()
- küsib kahemõõtmelise R-i objekti (maatriksi või
tabeli) ridade ja tulpade arvufactor()
- teeb tavalisest vektorist piiratud hulga
väärtustega faktorihead()
- kuvab R-i objekti esimesi elemente
(andmetabelis nt vaikimisi esimest 6 rida)is.character()
- küsib, kas objekti andmetüüp on
tekstis.logical()
- küsib, kas objekti andmetüüp on
loogiline väärtusis.numeric()
- küsib, kas objekti andmetüüp on
arvlength()
- küsib, mitu elementi vektoris on. Kui
kasutada data.frame’il, siis annab tabeli tulpade arvulevels()
- küsib, millised on faktori tasemed ehk
unikaalsed väärtusedlist()
- teeb listi või muudab olemasoleva(d)
objekti(d) listiksload()
- laadib RData formaadis salvestatud
andmestikkematrix()
- teeb maatriksi või muudab olemasoleva(d)
objekti(d) (nt vektori(d)) maatriksiksmode()
- küsib objekti andmetüüpipaste()
- kleebib üksikud väärtused või vektorid kokku
üheks tekstijadaks (string’iks)read.csv()
- loeb failist (nt) txt- või csv-formaadis
andmetabeliread.csv2()
- loeb failist (nt) txt- või csv-formaadis
andmetabeliread.delim()
- loeb failist (nt) txt- või csv-formaadis
andmetabeliread.table()
- loeb failist (nt) txt- või csv-formaadis
andmetabelisummary()
- annab R-i objektist ülevaate (andmetabelite
puhul nt kõikide tunnuste/tulpade kokkuvõtted)str()
- kuvab R-i objekti sisemise struktuuri ja
struktuuris kasutatavad andmetüübidtail()
- kuvab R-i objekti viimaseid elemente
(andmetabelis nt vaikimisi viimast 6 rida)vector()
- teeb vektoriView()
- kuvab andmetabeli eraldi vaates