R'da kategorik değişkenler

Share on:

Çoğu zaman istatistiksel analizlerde bazı değişkenleri kategorik değişken haline dönüştürme ihtiyacı duyarız. R ile yeni değişkenler oluşturmak ve mevcut değişkenleri kategorik değişken olarak kodlamak kolaylıkla yapılabilir. Şimdi bunu nasıl yapacağımızı mtcars veriseti üzerinden görelim. Öncelikli olarak verisetimizdeki değişkenler ve değişken tiplerini str() komutuyla tekrar görelim.

str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

vs değişkeninin numerik olarak tanımlandığını görüyoruz. Belli istatistiksel analizleri yapabilmek için değişkenlerin kategorik değişken olarak kodlanmaları gerekmektedir. Şimdi vs değişkenini kategorik olarak yeniden kodlayalım. R’da kategorik değişkenlerin türü faktördur. Yeni değişkenleri factor() fonksiyonuyla aşağıdaki şekilde üretebiliriz:

mtcars1 <- mtcars
mtcars1$vsFac <- factor(mtcars1$vs)
str(mtcars1)
## 'data.frame':    32 obs. of  12 variables:
##  $ mpg  : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl  : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp : num  160 160 108 258 360 ...
##  $ hp   : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat : num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt   : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec : num  16.5 17 18.6 19.4 17 ...
##  $ vs   : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am   : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear : num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb : num  4 4 1 1 2 1 4 2 2 4 ...
##  $ vsFac: Factor w/ 2 levels "0","1": 1 1 2 2 1 2 1 2 2 2 ...

Bu işlemi yaparken veriye etiket de ekliyebiliriz;

mtcars1$vsFac <- factor(mtcars1$vs, levels = c(0,1), labels = c("V-type","Straight"))
str(mtcars1)
## 'data.frame':    32 obs. of  12 variables:
##  $ mpg  : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl  : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp : num  160 160 108 258 360 ...
##  $ hp   : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat : num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt   : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec : num  16.5 17 18.6 19.4 17 ...
##  $ vs   : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am   : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear : num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb : num  4 4 1 1 2 1 4 2 2 4 ...
##  $ vsFac: Factor w/ 2 levels "V-type","Straight": 1 1 2 2 1 2 1 2 2 2 ...

Burada levels parametresiyle hangi değerin labels parametresinde tanımlanan etiketi alacağı tanımlanıyor. Böylelikle V tipi motorlar için “V-type” ve normal motorlar için “Straight” etiketlerini kullanmış olduk. Bu etiketler grafiklerin daha anlaşılır olmasına katkı yapacaklardır.