R'da kategorik değişkenler
Ç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.