Çevrim içi Ders

Bu hafta çevrim içi dersimizde veri düzenlemede count, group_by, acroos, summarize gibi diğer fonksiyonları öğrendik. Bu hafta öğrenciklerimi farklı bir veri setinde deneyeceğim.

Öncelikle mtcars veri setini yüklüyorum.

veri <- mtcars

Count değişkenini kullanabilmek için dplyr paketini yüklüyorum.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
count(mtcars)
##    n
## 1 32

Aynı işlemi pipe operatörü kullanarak da yapabiliriz. Pipe operatörünü kullanabilmek için magrittr paketini yüklüyorum. Veri setindeki herhangi bir değişkeni kullanmak için count kullandık. Mpg yani miles per galon değişkenine göre küçükten büyüğe sıralamak için aşağıdaki kodu kullanıyorum.

library(magrittr)
veri %>% count(mpg, sort=TRUE)
##     mpg n
## 1  10.4 2
## 2  15.2 2
## 3  19.2 2
## 4  21.0 2
## 5  21.4 2
## 6  22.8 2
## 7  30.4 2
## 8  13.3 1
## 9  14.3 1
## 10 14.7 1
## 11 15.0 1
## 12 15.5 1
## 13 15.8 1
## 14 16.4 1
## 15 17.3 1
## 16 17.8 1
## 17 18.1 1
## 18 18.7 1
## 19 19.7 1
## 20 21.5 1
## 21 24.4 1
## 22 26.0 1
## 23 27.3 1
## 24 32.4 1
## 25 33.9 1

Burada vs yani vites sayısına göre mpg değişkeninin sayısını tablolaştırmak istedim fakat tabloda vs değişkeni için bir sütun bulunmuyor. Bunun nedenini anlayamadım. Kübra hocaya soracağım.

veri %>% count(mpg, wt=vs, sort=TRUE)
##     mpg n
## 1  21.4 2
## 2  22.8 2
## 3  30.4 2
## 4  17.8 1
## 5  18.1 1
## 6  19.2 1
## 7  21.5 1
## 8  24.4 1
## 9  27.3 1
## 10 32.4 1
## 11 33.9 1
## 12 10.4 0
## 13 13.3 0
## 14 14.3 0
## 15 14.7 0
## 16 15.0 0
## 17 15.2 0
## 18 15.5 0
## 19 15.8 0
## 20 16.4 0
## 21 17.3 0
## 22 18.7 0
## 23 19.7 0
## 24 21.0 0
## 25 26.0 0
veri %>%
summarize(ortalama=mean(mpg))
##   ortalama
## 1 20.09062
veri %>% 
  summarize (
    n=n(),
    ortalama=mean(mpg),
    sd=sd(mpg),
    minimum=min(mpg),
    maksimum=max(mpg)
  )
##    n ortalama       sd minimum maksimum
## 1 32 20.09062 6.026948    10.4     33.9
veri %>% 
  group_by(vs) %>% 
  summarize (
    n=n(),
    ortalama=mean(mpg),
    sd=sd(mpg),
    minimum=min(mpg),
    maksimum=max(mpg)
  )
## # A tibble: 2 × 6
##      vs     n ortalama    sd minimum maksimum
##   <dbl> <int>    <dbl> <dbl>   <dbl>    <dbl>
## 1     0    18     16.6  3.86    10.4     26  
## 2     1    14     24.6  5.38    17.8     33.9

Birden fazla değişken için aynı işlemleri yapabilmek için across fonksiyonunu kullanıyoruz. Bu kodu yazayım derken bir kaç temel hata yaptım. Örneğin, .cols yazdıktan sonra parantez açtım. Ama olması gereken hangi sütunlarda değişkenleri tanımlaması gerektiğini sisteme anlatmak. Bu sebeple, eşittir koyarak değişkenleri belirtmem gerekiyordu. Sonra hatamı düzelttikten sonra yine temel bir hata yaptım. değişkenlerin sütunlarını yazarken başına c fonksiyonunu koymayı unuttum. Hata verince hatamı fark edip düzelttim.

veri %>%
     summarise(across(.cols= c(mpg, vs,cyl)))
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
##   always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
##     mpg vs cyl
## 1  21.0  0   6
## 2  21.0  0   6
## 3  22.8  1   4
## 4  21.4  1   6
## 5  18.7  0   8
## 6  18.1  1   6
## 7  14.3  0   8
## 8  24.4  1   4
## 9  22.8  1   4
## 10 19.2  1   6
## 11 17.8  1   6
## 12 16.4  0   8
## 13 17.3  0   8
## 14 15.2  0   8
## 15 10.4  0   8
## 16 10.4  0   8
## 17 14.7  0   8
## 18 32.4  1   4
## 19 30.4  1   4
## 20 33.9  1   4
## 21 21.5  1   4
## 22 15.5  0   8
## 23 15.2  0   8
## 24 13.3  0   8
## 25 19.2  0   8
## 26 27.3  1   4
## 27 26.0  0   4
## 28 30.4  1   4
## 29 15.8  0   8
## 30 19.7  0   6
## 31 15.0  0   8
## 32 21.4  1   4
veri %>%
     summarise(across(.cols= c(mpg, vs,cyl),.fns=mean, .names="{col}_ortalama"))
##   mpg_ortalama vs_ortalama cyl_ortalama
## 1     20.09062      0.4375       6.1875
veri %>%
     summarise(across
               (.cols= c(mpg, vs,cyl),
                 .fns=list(ortalama= ~mean(.), 
                           sd= ~sd(.) 
                           )))
##   mpg_ortalama   mpg_sd vs_ortalama     vs_sd cyl_ortalama   cyl_sd
## 1     20.09062 6.026948      0.4375 0.5040161       6.1875 1.785922
veri %>%
  top_n(2)
## Selecting by carb
##                mpg cyl disp  hp drat   wt qsec vs am gear carb
## Ferrari Dino  19.7   6  145 175 3.62 2.77 15.5  0  1    5    6
## Maserati Bora 15.0   8  301 335 3.54 3.57 14.6  0  1    5    8
veri %>%
  select(mpg) %>%
  arrange(desc(mpg)) %>%
  top_n(3)
## Selecting by mpg
##                 mpg
## Toyota Corolla 33.9
## Fiat 128       32.4
## Honda Civic    30.4
## Lotus Europa   30.4