11 Kategoriset muuttujat

Esimerkiksi bensankulutusta (tai tutkimuspotilaan pituutta) jatkuvalla asteikolla kuvaava muuttuja on jatkuva muuttuja. Sen sijaan edellä kappaleessa 9 esiteltiin hypoteettinen muuttuja verenpainetauti, joka sai joko arvon 0 tai 1; tällainen muuttuja ei olisi jatkuva vaan kategorinen muuttuja. Vielä spesifisemmin tällaisia dikotomisia (useimmiten joko arvon 0 tai 1 saavia) muuttujia kutsutaan dummy-muuttujiksi.

On mielestäni viisasta kertoa R:lle, mitkä muuttujistasi ovat kategorisia muuttujia, jotta R ei erehdy käsittelemään niitä missään analyyseissä jatkuvina muuttujina. R:ssä kategoriset muuttujat kannattaa tallentaa factor-tyyppisenä. Tämä on erittäin helppoa.

Voit katsella dataasi kirjoittamalla Consoleen seuraavan käskyn:

autoja


Pikainenkin silmäys tulosteeseen (vain 4 riviä tässä alla) paljastaa sinulle, että muuttuja vaihteisto on tässä datassa tarkoitettu kategoriseksi muuttujaksi. Muut muuttujat taas ovat selvästi jatkuvia muuttujia.

##                   bensankulutus_eu hevosvoima_eu massa_eu vaihteisto
## Mazda RX4                 11.20000      111.5279 1188.432          1
## Mazda RX4 Wag             11.20000      111.5279 1304.100          1
## Hornet Sportabout         12.57754      177.4308 1560.384          0
## Duster 360                16.44755      248.4031 1619.352          0


11.1 as.factor-käsky

Muutetaan muuttuja vaihteisto muotoon factor eli kategoriseksi muuttujaksi ja tallennetaan tulos “itsensä päälle” eikä siis luoda uutta datasettiä vaikkapa nimellä “autoja2”. Tähän on pari helppoa tapaa.

  1. vaihtoehto: Base-R:llä tehtäisiin seuraavasti:
autoja$vaihteisto <- as.factor(autoja$vaihteisto)

Huomaa, että dollarimerkillä varustetulla ilmaisulla autoja$vaihteisto ilmoitamme, että tahdomme muuttaa datasetistä autoja ainoastaan muuttujan vaihteisto muotoon factor.

  1. vaihtoehto on tehdä sama asia dplyria hyödyntäen:
autoja <- autoja %>% mutate(vaihteisto = as.factor(vaihteisto))

Aja jompi kumpi yllä mainituista tavoista. Jos nyt katselet dataasi uudelleen kirjoittamalla Consoleen seuraavan käskyn, mitään eroa entiseen ei kuitenkaan näe (tässä näytettynä vain 4 riviä):

autoja
##                   bensankulutus_eu hevosvoima_eu massa_eu vaihteisto
## Mazda RX4                 11.20000      111.5279 1188.432          1
## Mazda RX4 Wag             11.20000      111.5279 1304.100          1
## Hornet Sportabout         12.57754      177.4308 1560.384          0
## Duster 360                16.44755      248.4031 1619.352          0


Onkin ongelmallista, ettet näe kyseisessä tulosteessa, että tietääkö R kunkin muuttujan kohdalla että onko kyseessä jatkuva vaiko kategorinen muuttuja.

Apuun tulee tibble, joka on paranneltu versio karvalakki-R:n “datakehyksestä” (aiemmissa esimerkeissä “automobiilit”, “automobiilit2” jne. olivat tässä karvalakkimuodossa). Sinun ei tässä vaiheessa tarvitse ymmärtää mitään datakehyksistä tai miksi tibble on parempi muoto - just take my word for it.

11.2 tibble

Muutetaan seuraavassa datasettimme “autoja” muotoon tibble. Tallennetaan uusi datasetti nimellä “autoja2”.

Teemme samalla toisen tärkeän korjauksen. Tähän mennessä datasettimme rivit on nimetty automerkkien mukaan, mutta rivien nimeäminen ylipäänsä ei ole tänä päivänä suositeltavaa. Kun siirrymme tibble-muotoon, rivinimet tuhoutuvat ja tilalle tulevat rivinumerot. Automerkit (tai analogisesti: “tutkittavien kooditunnisteet”) näkyvät seuraavan käskyn jälkeen ensimmäisessä sarakkeessa, mikä on suositellumpaa.

Se käy näin - ja huomaa, että käsky on as_tibble eikä as.tibble:

autoja2 <- as_tibble(autoja, rownames = "Automerkit")


Kun tämän jälkeen kirjoitat konsoliin seuraavan käskyn, voit helposti havaita, että R todella tietää, että muuttuja vaihteisto on kategorinen (eli R:n muodossa factor):

autoja2


Alla näkyy 4 riviä datasta (katso myös kuva alla):

## # A tibble: 4 x 5
##   Automerkit        bensankulutus_eu hevosvoima_eu massa_eu vaihteisto
##   <chr>                        <dbl>         <dbl>    <dbl> <fct>     
## 1 Mazda RX4                     11.2          112.    1188. 1         
## 2 Mazda RX4 Wag                 11.2          112.    1304. 1         
## 3 Hornet Sportabout             12.6          177.    1560. 0         
## 4 Duster 360                    16.4          248.    1619. 0



R-opas by Ville Langén is licensed under Attribution-ShareAlike 4.0 International