Forcats Kütüphanesi
Forcats kütüphanesi faktörler ile ilgili olan bir kütüphanedir.
Faktörler, kategorik değişkenleri seviyeler halinde depolayan bir R’ nesnesidir ve faktörlerde sıralama önemlidir.
1 2 3 4 5 |
cinsiyet <- c("E", "E", "K", "E", "K") cinsiyet ## [1] "E" "E" "K" "E" "K" class(cinsiyet) ## [1] "character" |
Yukarıda da gördüğümüz üzere 2 çeşit cinsiyet vardır; Erkek ve Kadın. Verimizin sınıfı ise karakterdir.
1 2 3 4 5 6 |
cinsiyet <- factor(cinsiyet) cinsiyet ## [1] E E K E K ## Levels: E K class(cinsiyet) ## [1] "factor" |
karakter sınıfında olan verimizi faktör sınıfına geçirdiğimizde ise bize levels (seviyeler) olarak “E” ve “K” değerlerini veriyor.
1 2 |
str(cinsiyet) ## Factor w/ 2 levels "E","K": 1 1 2 1 2 |
Verimizin yapısını incelediğimizde ise artık “E” yi 1, “K” yi 2 harfi ile temsil ettiğini görüyoruz.
Karakterlerin sayısal halde kodlanmasının birincil amacı kategoriler tekrar edebilir ve hafızada fazladan yer kaplayabilirler. Ancak, faktör kullanırsak belleğin yükünü azaltabiliriz.
faktörlerin seviyeleri “levels” argümanı ile değiştirebiliyoruz.
1 2 3 4 5 6 7 |
cinsiyet2 <- factor(cinsiyet,levels=c("K","E")) cinsiyet2 ## [1] E E K E K ## Levels: K E str(cinsiyet2) ## Factor w/ 2 levels "K","E": 2 2 1 2 1 |
Başka bir örnek yapmak gerekirse
1 2 3 4 5 |
beden <- c("XL","S", "L", "XL","XXL","L","XL", "S") beden.factor <- factor(beden,ordered = TRUE,levels = c("S", "L","XL","XXL")) beden.factor ## [1] XL S L XL XXL L XL S ## Levels: S < L < XL < XXL |
1 2 3 4 5 6 |
beden.factor[1] > beden.factor[2] # XL > S Doğru bir ifadedir ## [1] TRUE beden.factor[3] > beden.factor[2] # L > S Doğru bir ifadedir ## [1] TRUE beden.factor[2] > beden.factor[4] # S > XL Yanlış bir ifadedir ## [1] FALSE |
faktörleri öğrendiğimize göre forcats kütüphanesini inceleyebiliriz.
Forcats paketinin amacı, seviyelerin (levels) veya değerlerin sırasını değiştirmek de dahil olmak üzere faktörlerle ilgili ortak sorunları çözmektir.
fonksiyonları tek tek gruplar halinde inceleyip uygulama yapalım.
1 2 3 4 5 6 |
library(forcats) library(dplyr) library(ggplot2) data("iris") data("mpg") data("gss_cat") |
Önemli bazı fonksiyonlar:
1- as_factor()
Girdiyi bir faktöre çevirir.
1 2 3 4 5 6 |
a <- c("ali", "kitap", "oku") class(a) ## [1] "character" a <- as_factor(a) class(a) ## [1] "factor" |
2- fct_count()
Faktörleri sayar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
gss_cat$relig %>% fct_count(sort = T) ## # A tibble: 16 x 2 ## f n ## <fct> <int> ## 1 Protestant 10846 ## 2 Catholic 5124 ## 3 None 3523 ## 4 Christian 689 ## 5 Jewish 388 ## 6 Other 224 ## 7 Buddhism 147 ## 8 Inter-nondenominational 109 ## 9 Moslem/islam 104 ## 10 Orthodox-christian 95 ## 11 No answer 93 ## 12 Hinduism 71 ## 13 Other eastern 32 ## 14 Native american 23 ## 15 Don't know 15 ## 16 Not applicable 0 |
3- fct_match()
Bir faktörün içinde herhangi bir seviyenin var olup olmadığını gösterir.
1 2 3 4 5 6 |
gss_cat$relig %>% fct_match("Protestant") %>% table() ## . ## FALSE TRUE ## 10637 10846 |
4- fct_unique()
Faktördeki benzersiz değerleri getirir.
1 2 3 4 5 6 7 8 9 |
gss_cat$relig %>% fct_unique() ## [1] No answer Don't know Inter-nondenominational ## [4] Native american Christian Orthodox-christian ## [7] Moslem/islam Other eastern Hinduism ## [10] Buddhism Other None ## [13] Jewish Catholic Protestant ## [16] Not applicable ## 16 Levels: No answer Don't know Inter-nondenominational ... Not applicable |