## Warning: package 'dplyr' was built under R version 4.5.2
##
## 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
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.1 ✔ readr 2.1.5
## ✔ ggplot2 4.0.0 ✔ stringr 1.5.2
## ✔ lubridate 1.9.4 ✔ tibble 3.3.0
## ✔ purrr 1.1.0 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## [1] 52.06660 57.97025 54.65856 55.72904 56.51883 53.54885 52.97913 50.93875
## [9] 52.99873 51.28461 55.12194 55.80803 54.39787 54.22303 56.67831 52.15366
## [17] 50.63977 54.10149 58.04453 57.22741 54.41942 57.80622 57.54395 55.36601
## [25] 52.26532 51.52920 52.57425 56.45652 58.23315 58.41441 55.64524 52.73122
## [33] 58.86027 50.38936 55.09115 54.64313 56.63635 50.11481 59.08148 52.88563
## [41] 59.40566 58.58686 56.87512 52.38800 52.49007 56.81925 54.67945 54.38097
## [49] 56.58115 51.24175 57.54844 55.14044 52.47835 59.09331 57.10421 53.69416
## [57] 58.32983 51.15019 57.77905 58.30805 58.07253 51.82346 55.24910 50.55017
## [65] 55.69487 57.80938 53.91904 52.42029 54.51504 55.91566 54.57874 53.59789
## [73] 55.14805 51.77830 59.06573 55.47157 53.65037 55.53160 57.91294 55.10536
## [81] 56.11247 56.81033 55.84561 55.69748 58.64021 53.95001 50.71113 57.98289
## [89] 52.20383 54.74556 53.00891 59.49834 50.21245 57.04890 59.55047 55.75059
## [97] 58.57656 58.37344 55.66948 58.39305
runif(100, 50, 60) Argümanların (n, min, max) ne işe yaradığını gösterir.
50 ile 60 arasında, 100 adet, sürekli (uniform) dağılan rastgele sayı üretir.
## [[1]]
## [1] 0.5065285
##
## [[2]]
## [1] 0.4074110 0.3700087
##
## [[3]]
## [1] 0.4309296 0.5279487 0.9923692
##
## [[4]]
## [1] 0.6682744 0.1025273 0.2901181 0.1067224
lapply() bir fonksiyonu, verilen bir vektörün her elemanına uygular.
1:4 -> c(1, 2, 3, 4)
runif fonksiyonu her elemana sırayla uygulanır.
## [[1]]
## [1] 19.45987 19.57876 15.42683 11.90012 10.77422
##
## [[2]]
## [1] 16.29197 16.08410 19.23588 15.08111 15.16915 18.99381
##
## [[3]]
## [1] 13.18495 15.15468 19.87776 19.05695 19.29596 16.70979 10.13929
##
## [[4]]
## [1] 12.70827 11.31876 10.39124 16.47580 16.92505 18.31547 16.77005 15.74456
##
## [[5]]
## [1] 10.56928 15.26122 16.99500 11.47933 19.37925 11.69839 10.51437 19.85325
## [9] 14.71032
##
## [[6]]
## [1] 15.41268 17.49973 15.63124 13.76936 15.88158 19.23988 12.30713 16.67887
## [9] 15.72166 17.51825
5:10 -> c(5, 6, 7, 8, 9, 10)
lapply, bu vektördeki her elemanı sırayla alır.
min = 10, max = 20 olacak şekilde 5,6,8,9,10 elemanlarının her birine uygulanır.
## [[1]]
## [1] 2.927072
##
## [[2]]
## [1] 7.289477 4.636684
##
## [[3]]
## [1] 3.686100 2.315791 3.188229
X = 1:3 → n = 1, 2, 3
min = 1:3 → c(1, 2, 3)
max = 10:12 → c(10, 11, 12)
şeklinde her bir eleman için uygulanır.
## [[1]]
## [1] 4.02
##
## [[2]]
## [1] 5.42 7.56
##
## [[3]]
## [1] 4.54 5.32 4.70
Üretilen sayıların virgülden sonra 2 basamaklı olması için round %>% ile eklenir.
## $m1
## [,1] [,2] [,3] [,4] [,5]
## [1,] 8.417910 8.450586 5.975046 6.017676 6.869440
## [2,] 9.364519 5.579680 7.306004 7.954246 5.706491
##
## $m2
## [,1] [,2] [,3] [,4] [,5]
## [1,] 10.96156 19.59500 10.95290 11.10301 13.11307
## [2,] 17.02874 17.95100 15.81901 15.71759 16.92718
## [3,] 10.77588 13.86566 14.72315 17.90741 16.74615
## [4,] 12.34896 19.76267 13.02346 16.38252 17.58203
## $m1
## [1] 57.82633 53.43854
##
## $m2
## [1] 143.7396 288.2485 180.4545 217.1198
set.seed() ile kod her çalıştırıldığında aynı sayılar üretilir.
m1: 5–10 aralığında üretilmiş 10 rastgele sayı, 2 satır × 5 sütunluk bir matrise dönüştürülmüştür.
m2: 10–20 aralığında üretilmiş 20 rastgele sayı, 4 satır × 5 sütunluk bir matrise dönüştürülmüştür. Bu iki matris, liste adlı bir liste nesnesi içine konmuştur.
Elimizde tek bir matris değil, bir liste içinde birden fazla matris varsa (m1 ve m2 gibi) listedeki her matriste, belirli sütunlar arasında aynı matematiksel işlemi otomatik ve tek seferde uygulamak için lapply kullanırız.
Lapply, listedeki her elemanı yani önce m1, sonra m2 sırayla alır. Her eleman a olarak adlandırılır.
a[,1] -> 1. sütun (vektör)
a[,5] -> 5. sütun (vektör)
## Rows: 150
## Columns: 5
## $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.…
## $ Sepal.Width <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.…
## $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.…
## $ Petal.Width <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.…
## $ Species <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, s…
## $setosa
## [1] 3.428
##
## $versicolor
## [1] 2.77
##
## $virginica
## [1] 2.974
iris_group <- split(iris, iris$Species)
Veri seti, Species (tür) değişkenine göre 3 alt gruba ayrıldı ve iris_group listesine konuldu.
lapply(iris_group, function(x) { mean(x[,2]) })
lapply ile, listedeki her tür grubu sırayla ele alındı.
x[,2] -> Her grubun 2. sütununu alma komutu
mean() -> Aritmetik ortalama hesaplama komutu.
Özetle her çiçek türü için, sepal genişliğinin ortalaması ayrı ayrı hesaplanmıştır.
Bu kod dplyr::group_by() + summarise() fonksiyonu ile de yazılabilirdi
##Tapply Fonksiyonu tapply bir vektörü, bir veya daha fazla faktöre göre gruplandırarak özet istatistik hesaplamak için kullanılan fonksiyondur.
## setosa versicolor virginica
## 0.3524897 0.5161711 0.6358796
iris\(Sepal.Length -> sayısal değişken iris\)Species -> türlere göre gruplama yapılmıştır (gruplama değişkeni) ve sd fonksiyonu uygulanmıştır Her çiçek türü için sepal uzunluğunun standart sapması hesaplanmıştır.
## iris$Species: setosa
## [1] 0.3524897
## ------------------------------------------------------------
## iris$Species: versicolor
## [1] 0.5161711
## ------------------------------------------------------------
## iris$Species: virginica
## [1] 0.6358796
Aynı işlem by ile yapılabilir.
apply -> Bu matrisin satırlarına/sütunlarına ne işlem yapılacak? tapply -> Bu değişkeni gruplara ayırıp ne hesaplanacak?
apply apply(X, Y, Z) Satır veya sütun bazlı işlem yapar, gruplama yapmaz, matris veya data frame üzerinde çalışır.
tapply Vektör üzerinde çalışır, gruplama yapar.
Bağıl değişkenlik katsayısı, standart sapmanın aritmetik ortalamaya oranının yüzde cinsinden ifadesidir. Diğer bir ifadeyle, bir dağılımdaki değişkenliğin, ortalamaya göre ne kadar büyük olduğunu gösteren bir ölçüdür.
Formül: (Standart Sapma / Aritmatik Ortalama) * 100
standart sapma /aritmetik ortalama × 100 → yüzde cinsinden bağıl değişkenlik katsayısı hesaplanır.
Her biri 100 gözlemden oluşan ve normal dağılımdan gelen üç veri seti üretilir. Ortalamalar 50, standart sapmalar 15, 10, 5.
## [1] 30.11906
## [1] 20.78653
## [1] 9.39109
Her veri seti için ayrı ayrı bağıl değişkenlik katsayısı hesaplanır.
Aynı işlemi birden fazla veri setine tek satırda uygulamak için veriler listeye alınır.
## [[1]]
## [1] 30.11906
##
## [[2]]
## [1] 20.78653
##
## [[3]]
## [1] 9.39109
Veriler listesindeki her veri setine bagildeg fonksiyonu uygulanır. Çıktı tipi listedir ve karmaşıktır.
## [1] 30.11906 20.78653 9.39109
Veriler listesindeki her veri setine bagildeg fonksiyonu uygulanır. Çıktı tipi vektürdür daha basittir ve görsel olarak kolaydır.