Teisendused

On põhjust peatuda veel kahel aspektil -- kuidas andmestikke omavahel liita ja sorteerida, aga ka kuidas objektide omavaheline teisendamine. Peatume esmalt viimasel.

Kuidas me teame millise objektiga täpselt tegemist on ja kuidas objekti liiki muuta. Esimese küsimuse üks variant võiks olla näiteks "kas objekt mat on maatriks?", näide teise probleemi kohta oleks "muuda objekt mat andmemaatriksiks". Seda tüüpi küsimused on R-is väga elegantselt lahendatud.

> is.matrix(mat)
[1] TRUE

> as.data.frame(mat)
V1 V2 V3
1 1 2 3
2 4 5 6
3 7 8 9

Viimase näite kohta selgituseks veel, et kuivõrd veerunimesid ette ei antud, siis pidi R need ise määrama. Analoogiliselt eeltoodudfuntsioonidega eksisteerivad muidugi ka nt. funktsioonid is.list või as.vector.

Oluline on vahet teha ka tunnuste väärtusetüüpidel: tõeväärtuseid TRUE/FALSE (tüüp logical) oleme juba korduvalt kohanud. Väga levinud on ka numbrilised väärtused (tüüp numeric). Muidugi eksisteerib ka tesktiline väärtusetüüp (tüüp character) ja lisaks veel nominaalsete tunnuste väljendamiseks kasutatav väärtusetüüp (tüüp factor). Viimase tasemed võivad olla ka järjestatud. Ka väärtusetüüpide jaoks on olemas analoogilised funktsioonid (näiteks tõeväärtust saab väga edukalt völjendada ka numbriliselt TRUE on 1 ja FALSE on 0).

Kahe andmestiku liitmisel saab kasutada funktsiooni merge abi, kusjuures kui andmestikes on kattuva nimega tunnused, siis oskab R ise objektid nende tunnuste alusel vastavusse viia. Vastasel juhul tuleb ära näidata, millised tunnused on omavahel vastavuses.

Kui andmestikke on vaja paigutada lihtsalt üksteise kõrvale või üksteise alla, siis on selleks mõeldud funktsioonid cbind ja rbind.

Andmestiku sorteerimine etteantud tunnus(t)e järgi on Ris mõneti ebatraditsionaalne -- funktsioon order annab ridade järjestuse etteantud tunnus(t)e järgi sorteerituna. Seega tuleb read nüüd selle järjestuse alusel välja kutsuda.

> andmed[order(andmed$kaal,andmed$pikkus),]
   toit grupp pikkus  kaal
3     c     1   5.23  9.33
18    c     6   6.03 12.95
1     a     1   5.45 17.27
11    b     4   8.80 19.76
2     b     1   7.95 21.09
26    b     9     NA 21.60
17    b     6   8.67 21.63
27    c     9   7.88 21.67
16    a     6  10.19 22.85
25    a     9   9.69 23.03
7     a     3  10.34 23.27
9     c     3  10.06 24.29
6     c     2   9.32 24.40
23    b     8   9.60 25.66
21    c     7     NA 26.34
5     b     2  10.40 26.55
8     b     3  10.59 26.71
24    c     8  10.11 26.91
10    a     4  12.07 29.13
30    c    10  13.63 29.60
20    b     7  12.63 30.63
15    c     5  11.92 32.13
22    a     8  12.54 33.30
14    b     5  13.65 33.30
13    a     5  13.99 33.30
29    b    10  15.25 38.69
28    a    10  17.82 47.58
12    c     4   7.75    NA
4     a     2   9.56    NA
19    a     7  11.95    NA

Muidugi on võimalik ka kahanev järjestamine.