library(dplyr)
Bu hafta apply ailesine ait temel fonksiyonları öğrendim.Aşağıda kullanımlarını özetledim. Genel olarak kullanışlı ve işe yarar bir fonksiyon grubu olduğunu düşünüyorum. mapply ve vectorize kısmı biraz karışık geldi.
lapply(List, Fonksiyon) (List Apply):
Girdi olarak Liste veya Vektör.Çıktı, her zaman listedir.
Sonucun yapısının bozulmamasını, garantili olarak liste dönmesini istiyorsan kullanırsın.
sapply(List, Fonksiyon) (Simple Apply):
lapply ile aynı işi yapar ama çıktıyı sadeleştirmeye çalışır.
Çıktıy mümkünse vektör veya matris verir, yapamazsa liste verir.
Sonucu ekranda tablo veya sayı dizisi olarak temiz görmek istiyorsan kullanırsın.
apply Matrisin satırları veya sütunları üzerinde işlem yapar.
apply(Matris, MARGIN, Fonksiyon):
MARGIN = 1: Fonksiyonu Satırlara uygular. (Yatay)
MARGIN = 2: Fonksiyonu Sütunlara uygular. (Dikey)
RowMeans, colMeans, rowSums, colSums bunun optimize edilmiş hızlı halleridir.
Gruplara Göre Bölüp İşlem Yapanlar (tapply, by, split)
Veriyi kategorilere (faktörlere) ayırıp özet istatistik almak için kullanılır.
tapply(Veri, Grup, Fonksiyon) (Table Apply):
Bir vektörü gruplara böler ve her gruba fonksiyonu uygular.
Örnek: Erkeklerin ve Kadınların boy ortalamasını ayrı ayrı almak.
split(Veri, Grup):
Hesaplama yapmaz, sadece veriyi gruplara böler. Genelde lapply ile birlikte kullanılır.
by():
tapply’ın data frame versiyonudur. Tüm veri setini gruplara ayırıp işlem yapar.
Çoklu Değişken ve Paralel İşlem (mapply) mapply(Fonksiyon, Liste1, Liste2…):
Birden fazla listeyi aynı anda fonksiyona sokar.
Örnek: rep fonksiyonuna hem “tekrarlanacak sayıyı” hem de “kaç kere tekrarlanacağını” liste olarak vermek.
lapply’ın çok argümanlı halidir.
Anonim Fonksiyonlar:
Sadece o an apply içinde kullanıp atacağın, ismi olmayan geçici fonksiyonlardır.
Örnek: function(x) { x[1] } (Sadece ilk elemanı al).
Vectorize():
Normalde sadece tek sayı (skaler) kabul eden bir fonksiyonu, vektör kabul eder hale getirir. mapply’ın otomatikleştirilmiş halidir.
Derste yaptığımız örnekleri pekiştirmek için sayılarla oynayarak tekrar yaptım, benim için bu şekilde biraz daha anlaşılır oldu.Denemelerim sırasında, bazen aynı çıktıyı farklı fonksiyonlarla alabildiğimi de görmüş oldum.
x<-list(a=1:10, b=rnorm(20))
print(x)
## $a
## [1] 1 2 3 4 5 6 7 8 9 10
##
## $b
## [1] -0.36209262 0.34311437 0.86417629 0.65283784 -0.36098552 0.25165172
## [7] 1.33469703 0.49355521 0.32838370 -0.04890404 1.64728140 0.52062556
## [13] 0.64686431 0.17318035 -1.92188255 0.70073105 -0.78342218 0.07520025
## [19] -0.68259287 -1.46516453
lapply(x,mean)
## $a
## [1] 5.5
##
## $b
## [1] 0.1203627
lapply(1:5, runif) # runif default değer 0-1 arasında rastgele sayı
## [[1]]
## [1] 0.5286558
##
## [[2]]
## [1] 0.6707645 0.7380226
##
## [[3]]
## [1] 0.5200873 0.4269742 0.4435825
##
## [[4]]
## [1] 0.2539859 0.3252133 0.1043122 0.7833780
##
## [[5]]
## [1] 0.2134755 0.6362869 0.9707015 0.7496725 0.9836523
lapply(1:5, runif, min=5, max=10)
## [[1]]
## [1] 7.47238
##
## [[2]]
## [1] 7.726791 7.285920
##
## [[3]]
## [1] 7.140437 5.710013 7.357474
##
## [[4]]
## [1] 6.106514 5.992338 6.000439 5.376100
##
## [[5]]
## [1] 5.342716 7.537967 7.141346 9.833864 7.651663
lapply(1:5, runif, min=10:12, max=15:20)
## [[1]]
## [1] 11.62161
##
## [[2]]
## [1] 12.13484 13.01416
##
## [[3]]
## [1] 14.99991 15.77897 14.25728
##
## [[4]]
## [1] 12.47963 13.33229 13.14010 10.85070
##
## [[5]]
## [1] 11.45886 14.71380 16.20200 14.46504 15.13889
y<- list(m1= matrix(runif(6,1,5),2,3),
m2= matrix(runif(8,1,10),2,4))
y
## $m1
## [,1] [,2] [,3]
## [1,] 2.830332 1.602071 2.650123
## [2,] 3.064555 3.316825 2.128949
##
## $m2
## [,1] [,2] [,3] [,4]
## [1,] 2.495892 4.800032 6.253784 1.412476
## [2,] 2.482827 5.885636 2.395381 9.116431
lapply(y, colSums)
## $m1
## [1] 5.894887 4.918896 4.779072
##
## $m2
## [1] 4.978719 10.685668 8.649165 10.528907
X <- list(a = 1:3, b = rnorm(5), c = rnorm(6), d = rnorm(7))
X
## $a
## [1] 1 2 3
##
## $b
## [1] 0.25773152 -0.06687073 -1.48863579 -0.82494731 -0.14094317
##
## $c
## [1] -0.97811082 0.86130692 -0.26401873 -0.09114436 -1.17630757 1.20068796
##
## $d
## [1] -0.86003873 -1.49246764 -1.02131694 -0.02000947 -0.24576070 0.87060686
## [7] -0.01774637
lapply(X, mean)
## $a
## [1] 2
##
## $b
## [1] -0.4527331
##
## $c
## [1] -0.07459776
##
## $d
## [1] -0.3981047
sapply(X, mean) # tek satırda temiz görüntü verir.
## a b c d
## 2.00000000 -0.45273310 -0.07459776 -0.39810471
lapply(X, function(a) {a[[2]]}) # X listesinin her elemanının 2. elemanını alır.
## $a
## [1] 2
##
## $b
## [1] -0.06687073
##
## $c
## [1] 0.8613069
##
## $d
## [1] -1.492468
set.seed(37)
a <- c(rnorm(3), runif(5), rnorm(7)) # 15 elemanlı vektör
b <- gl(3, 5) # 3 tane grup oluştur ve her birini 5 kere tekrar et.
a
## [1] 0.1247540 0.3820746 0.5792428 0.3844752 0.3521031 0.2037364
## [7] 0.1472656 0.3696752 0.5997253 -2.8450001 0.8423960 -1.0764015
## [13] 0.8963913 1.0188049 1.0568641
b
## [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
## Levels: 1 2 3
split(a, b)
## $`1`
## [1] 0.1247540 0.3820746 0.5792428 0.3844752 0.3521031
##
## $`2`
## [1] 0.2037364 0.1472656 0.3696752 0.5997253 -2.8450001
##
## $`3`
## [1] 0.8423960 -1.0764015 0.8963913 1.0188049 1.0568641
lapply(split(a, b), mean)
## $`1`
## [1] 0.3645299
##
## $`2`
## [1] -0.3049195
##
## $`3`
## [1] 0.547611
tapply(a, b, mean)
## 1 2 3
## 0.3645299 -0.3049195 0.5476110
notlar <- c(50, 90, 45, 80, 100, 60)
siniflar <- c("A", "A", "B", "A", "B", "B")
split(notlar,siniflar)
## $A
## [1] 50 90 80
##
## $B
## [1] 45 100 60
lapply(split(notlar,siniflar), mean)
## $A
## [1] 73.33333
##
## $B
## [1] 68.33333
tapply(notlar, siniflar, mean)
## A B
## 73.33333 68.33333
glimpse(mtcars)
## Rows: 32
## Columns: 11
## $ mpg <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.2, 17.8,…
## $ cyl <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8,…
## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 140.8, 16…
## $ hp <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, 180…
## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92, 3.92,…
## $ wt <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3.150, 3.…
## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 22.90, 18…
## $ vs <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,…
## $ am <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,…
## $ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3,…
## $ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2,…
cargroup<-split(mtcars, mtcars$cyl)
lapply(cargroup, function(x) { mean(x[,1]) }) # Her grubun 'mpg' (1. sütun) ortalaması
## $`4`
## [1] 26.66364
##
## $`6`
## [1] 19.74286
##
## $`8`
## [1] 15.1
lapply(cargroup, summary)
## $`4`
## mpg cyl disp hp drat
## Min. :21.40 Min. :4 Min. : 71.10 Min. : 52.00 Min. :3.690
## 1st Qu.:22.80 1st Qu.:4 1st Qu.: 78.85 1st Qu.: 65.50 1st Qu.:3.810
## Median :26.00 Median :4 Median :108.00 Median : 91.00 Median :4.080
## Mean :26.66 Mean :4 Mean :105.14 Mean : 82.64 Mean :4.071
## 3rd Qu.:30.40 3rd Qu.:4 3rd Qu.:120.65 3rd Qu.: 96.00 3rd Qu.:4.165
## Max. :33.90 Max. :4 Max. :146.70 Max. :113.00 Max. :4.930
## wt qsec vs am
## Min. :1.513 Min. :16.70 Min. :0.0000 Min. :0.0000
## 1st Qu.:1.885 1st Qu.:18.56 1st Qu.:1.0000 1st Qu.:0.5000
## Median :2.200 Median :18.90 Median :1.0000 Median :1.0000
## Mean :2.286 Mean :19.14 Mean :0.9091 Mean :0.7273
## 3rd Qu.:2.623 3rd Qu.:19.95 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :3.190 Max. :22.90 Max. :1.0000 Max. :1.0000
## gear carb
## Min. :3.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:1.000
## Median :4.000 Median :2.000
## Mean :4.091 Mean :1.545
## 3rd Qu.:4.000 3rd Qu.:2.000
## Max. :5.000 Max. :2.000
##
## $`6`
## mpg cyl disp hp drat
## Min. :17.80 Min. :6 Min. :145.0 Min. :105.0 Min. :2.760
## 1st Qu.:18.65 1st Qu.:6 1st Qu.:160.0 1st Qu.:110.0 1st Qu.:3.350
## Median :19.70 Median :6 Median :167.6 Median :110.0 Median :3.900
## Mean :19.74 Mean :6 Mean :183.3 Mean :122.3 Mean :3.586
## 3rd Qu.:21.00 3rd Qu.:6 3rd Qu.:196.3 3rd Qu.:123.0 3rd Qu.:3.910
## Max. :21.40 Max. :6 Max. :258.0 Max. :175.0 Max. :3.920
## wt qsec vs am
## Min. :2.620 Min. :15.50 Min. :0.0000 Min. :0.0000
## 1st Qu.:2.822 1st Qu.:16.74 1st Qu.:0.0000 1st Qu.:0.0000
## Median :3.215 Median :18.30 Median :1.0000 Median :0.0000
## Mean :3.117 Mean :17.98 Mean :0.5714 Mean :0.4286
## 3rd Qu.:3.440 3rd Qu.:19.17 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :3.460 Max. :20.22 Max. :1.0000 Max. :1.0000
## gear carb
## Min. :3.000 Min. :1.000
## 1st Qu.:3.500 1st Qu.:2.500
## Median :4.000 Median :4.000
## Mean :3.857 Mean :3.429
## 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.000 Max. :6.000
##
## $`8`
## mpg cyl disp hp drat
## Min. :10.40 Min. :8 Min. :275.8 Min. :150.0 Min. :2.760
## 1st Qu.:14.40 1st Qu.:8 1st Qu.:301.8 1st Qu.:176.2 1st Qu.:3.070
## Median :15.20 Median :8 Median :350.5 Median :192.5 Median :3.115
## Mean :15.10 Mean :8 Mean :353.1 Mean :209.2 Mean :3.229
## 3rd Qu.:16.25 3rd Qu.:8 3rd Qu.:390.0 3rd Qu.:241.2 3rd Qu.:3.225
## Max. :19.20 Max. :8 Max. :472.0 Max. :335.0 Max. :4.220
## wt qsec vs am gear
## Min. :3.170 Min. :14.50 Min. :0 Min. :0.0000 Min. :3.000
## 1st Qu.:3.533 1st Qu.:16.10 1st Qu.:0 1st Qu.:0.0000 1st Qu.:3.000
## Median :3.755 Median :17.18 Median :0 Median :0.0000 Median :3.000
## Mean :3.999 Mean :16.77 Mean :0 Mean :0.1429 Mean :3.286
## 3rd Qu.:4.014 3rd Qu.:17.55 3rd Qu.:0 3rd Qu.:0.0000 3rd Qu.:3.000
## Max. :5.424 Max. :18.00 Max. :0 Max. :1.0000 Max. :5.000
## carb
## Min. :2.00
## 1st Qu.:2.25
## Median :3.50
## Mean :3.50
## 3rd Qu.:4.00
## Max. :8.00
lapply(cargroup, function(x) {
colMeans(x[, c("mpg", "disp", "hp")])
})
## $`4`
## mpg disp hp
## 26.66364 105.13636 82.63636
##
## $`6`
## mpg disp hp
## 19.74286 183.31429 122.28571
##
## $`8`
## mpg disp hp
## 15.1000 353.1000 209.2143
sapply(cargroup, function(x) {
colMeans(x[, c("mpg", "disp", "hp")])
}) # lapply'ın sadeleştirilmiş hali
## 4 6 8
## mpg 26.66364 19.74286 15.1000
## disp 105.13636 183.31429 353.1000
## hp 82.63636 122.28571 209.2143
tapply(mtcars$mpg, mtcars$cyl, sd) # arabaların silindir sayılarına (cyl) göre gruplandır, her grubun yakıt tüketiminin (mpg) standart sapmasını hesapla
## 4 6 8
## 4.509828 1.453567 2.560048
by(mtcars$mpg, mtcars$cyl, sd)
## mtcars$cyl: 4
## [1] 4.509828
## ------------------------------------------------------------
## mtcars$cyl: 6
## [1] 1.453567
## ------------------------------------------------------------
## mtcars$cyl: 8
## [1] 2.560048
by(mtcars, mtcars$cyl, summary)
## mtcars$cyl: 4
## mpg cyl disp hp drat
## Min. :21.40 Min. :4 Min. : 71.10 Min. : 52.00 Min. :3.690
## 1st Qu.:22.80 1st Qu.:4 1st Qu.: 78.85 1st Qu.: 65.50 1st Qu.:3.810
## Median :26.00 Median :4 Median :108.00 Median : 91.00 Median :4.080
## Mean :26.66 Mean :4 Mean :105.14 Mean : 82.64 Mean :4.071
## 3rd Qu.:30.40 3rd Qu.:4 3rd Qu.:120.65 3rd Qu.: 96.00 3rd Qu.:4.165
## Max. :33.90 Max. :4 Max. :146.70 Max. :113.00 Max. :4.930
## wt qsec vs am
## Min. :1.513 Min. :16.70 Min. :0.0000 Min. :0.0000
## 1st Qu.:1.885 1st Qu.:18.56 1st Qu.:1.0000 1st Qu.:0.5000
## Median :2.200 Median :18.90 Median :1.0000 Median :1.0000
## Mean :2.286 Mean :19.14 Mean :0.9091 Mean :0.7273
## 3rd Qu.:2.623 3rd Qu.:19.95 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :3.190 Max. :22.90 Max. :1.0000 Max. :1.0000
## gear carb
## Min. :3.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:1.000
## Median :4.000 Median :2.000
## Mean :4.091 Mean :1.545
## 3rd Qu.:4.000 3rd Qu.:2.000
## Max. :5.000 Max. :2.000
## ------------------------------------------------------------
## mtcars$cyl: 6
## mpg cyl disp hp drat
## Min. :17.80 Min. :6 Min. :145.0 Min. :105.0 Min. :2.760
## 1st Qu.:18.65 1st Qu.:6 1st Qu.:160.0 1st Qu.:110.0 1st Qu.:3.350
## Median :19.70 Median :6 Median :167.6 Median :110.0 Median :3.900
## Mean :19.74 Mean :6 Mean :183.3 Mean :122.3 Mean :3.586
## 3rd Qu.:21.00 3rd Qu.:6 3rd Qu.:196.3 3rd Qu.:123.0 3rd Qu.:3.910
## Max. :21.40 Max. :6 Max. :258.0 Max. :175.0 Max. :3.920
## wt qsec vs am
## Min. :2.620 Min. :15.50 Min. :0.0000 Min. :0.0000
## 1st Qu.:2.822 1st Qu.:16.74 1st Qu.:0.0000 1st Qu.:0.0000
## Median :3.215 Median :18.30 Median :1.0000 Median :0.0000
## Mean :3.117 Mean :17.98 Mean :0.5714 Mean :0.4286
## 3rd Qu.:3.440 3rd Qu.:19.17 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :3.460 Max. :20.22 Max. :1.0000 Max. :1.0000
## gear carb
## Min. :3.000 Min. :1.000
## 1st Qu.:3.500 1st Qu.:2.500
## Median :4.000 Median :4.000
## Mean :3.857 Mean :3.429
## 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.000 Max. :6.000
## ------------------------------------------------------------
## mtcars$cyl: 8
## mpg cyl disp hp drat
## Min. :10.40 Min. :8 Min. :275.8 Min. :150.0 Min. :2.760
## 1st Qu.:14.40 1st Qu.:8 1st Qu.:301.8 1st Qu.:176.2 1st Qu.:3.070
## Median :15.20 Median :8 Median :350.5 Median :192.5 Median :3.115
## Mean :15.10 Mean :8 Mean :353.1 Mean :209.2 Mean :3.229
## 3rd Qu.:16.25 3rd Qu.:8 3rd Qu.:390.0 3rd Qu.:241.2 3rd Qu.:3.225
## Max. :19.20 Max. :8 Max. :472.0 Max. :335.0 Max. :4.220
## wt qsec vs am gear
## Min. :3.170 Min. :14.50 Min. :0 Min. :0.0000 Min. :3.000
## 1st Qu.:3.533 1st Qu.:16.10 1st Qu.:0 1st Qu.:0.0000 1st Qu.:3.000
## Median :3.755 Median :17.18 Median :0 Median :0.0000 Median :3.000
## Mean :3.999 Mean :16.77 Mean :0 Mean :0.1429 Mean :3.286
## 3rd Qu.:4.014 3rd Qu.:17.55 3rd Qu.:0 3rd Qu.:0.0000 3rd Qu.:3.000
## Max. :5.424 Max. :18.00 Max. :0 Max. :1.0000 Max. :5.000
## carb
## Min. :2.00
## 1st Qu.:2.25
## Median :3.50
## Mean :3.50
## 3rd Qu.:4.00
## Max. :8.00
tapply(mtcars, mtcars$cyl, summary)
## $`4`
## mpg cyl disp hp drat
## Min. :21.40 Min. :4 Min. : 71.10 Min. : 52.00 Min. :3.690
## 1st Qu.:22.80 1st Qu.:4 1st Qu.: 78.85 1st Qu.: 65.50 1st Qu.:3.810
## Median :26.00 Median :4 Median :108.00 Median : 91.00 Median :4.080
## Mean :26.66 Mean :4 Mean :105.14 Mean : 82.64 Mean :4.071
## 3rd Qu.:30.40 3rd Qu.:4 3rd Qu.:120.65 3rd Qu.: 96.00 3rd Qu.:4.165
## Max. :33.90 Max. :4 Max. :146.70 Max. :113.00 Max. :4.930
## wt qsec vs am
## Min. :1.513 Min. :16.70 Min. :0.0000 Min. :0.0000
## 1st Qu.:1.885 1st Qu.:18.56 1st Qu.:1.0000 1st Qu.:0.5000
## Median :2.200 Median :18.90 Median :1.0000 Median :1.0000
## Mean :2.286 Mean :19.14 Mean :0.9091 Mean :0.7273
## 3rd Qu.:2.623 3rd Qu.:19.95 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :3.190 Max. :22.90 Max. :1.0000 Max. :1.0000
## gear carb
## Min. :3.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:1.000
## Median :4.000 Median :2.000
## Mean :4.091 Mean :1.545
## 3rd Qu.:4.000 3rd Qu.:2.000
## Max. :5.000 Max. :2.000
##
## $`6`
## mpg cyl disp hp drat
## Min. :17.80 Min. :6 Min. :145.0 Min. :105.0 Min. :2.760
## 1st Qu.:18.65 1st Qu.:6 1st Qu.:160.0 1st Qu.:110.0 1st Qu.:3.350
## Median :19.70 Median :6 Median :167.6 Median :110.0 Median :3.900
## Mean :19.74 Mean :6 Mean :183.3 Mean :122.3 Mean :3.586
## 3rd Qu.:21.00 3rd Qu.:6 3rd Qu.:196.3 3rd Qu.:123.0 3rd Qu.:3.910
## Max. :21.40 Max. :6 Max. :258.0 Max. :175.0 Max. :3.920
## wt qsec vs am
## Min. :2.620 Min. :15.50 Min. :0.0000 Min. :0.0000
## 1st Qu.:2.822 1st Qu.:16.74 1st Qu.:0.0000 1st Qu.:0.0000
## Median :3.215 Median :18.30 Median :1.0000 Median :0.0000
## Mean :3.117 Mean :17.98 Mean :0.5714 Mean :0.4286
## 3rd Qu.:3.440 3rd Qu.:19.17 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :3.460 Max. :20.22 Max. :1.0000 Max. :1.0000
## gear carb
## Min. :3.000 Min. :1.000
## 1st Qu.:3.500 1st Qu.:2.500
## Median :4.000 Median :4.000
## Mean :3.857 Mean :3.429
## 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.000 Max. :6.000
##
## $`8`
## mpg cyl disp hp drat
## Min. :10.40 Min. :8 Min. :275.8 Min. :150.0 Min. :2.760
## 1st Qu.:14.40 1st Qu.:8 1st Qu.:301.8 1st Qu.:176.2 1st Qu.:3.070
## Median :15.20 Median :8 Median :350.5 Median :192.5 Median :3.115
## Mean :15.10 Mean :8 Mean :353.1 Mean :209.2 Mean :3.229
## 3rd Qu.:16.25 3rd Qu.:8 3rd Qu.:390.0 3rd Qu.:241.2 3rd Qu.:3.225
## Max. :19.20 Max. :8 Max. :472.0 Max. :335.0 Max. :4.220
## wt qsec vs am gear
## Min. :3.170 Min. :14.50 Min. :0 Min. :0.0000 Min. :3.000
## 1st Qu.:3.533 1st Qu.:16.10 1st Qu.:0 1st Qu.:0.0000 1st Qu.:3.000
## Median :3.755 Median :17.18 Median :0 Median :0.0000 Median :3.000
## Mean :3.999 Mean :16.77 Mean :0 Mean :0.1429 Mean :3.286
## 3rd Qu.:4.014 3rd Qu.:17.55 3rd Qu.:0 3rd Qu.:0.0000 3rd Qu.:3.000
## Max. :5.424 Max. :18.00 Max. :0 Max. :1.0000 Max. :5.000
## carb
## Min. :2.00
## 1st Qu.:2.25
## Median :3.50
## Mean :3.50
## 3rd Qu.:4.00
## Max. :8.00
apply(mtcars,2,mean) # Her sütunun ortalamasını al
## mpg cyl disp hp drat wt qsec
## 20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750
## vs am gear carb
## 0.437500 0.406250 3.687500 2.812500
colMeans(mtcars) # aynı işlem, aynı sonuç
## mpg cyl disp hp drat wt qsec
## 20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750
## vs am gear carb
## 0.437500 0.406250 3.687500 2.812500
bagil_degiskenlik <- function(x){
(sd(x)/mean(x))*100
}
apply(mtcars, 2, bagil_degiskenlik)
## mpg cyl disp hp drat wt qsec vs
## 29.99881 28.86338 53.71779 46.74077 14.86638 30.41285 10.01159 115.20369
## am gear carb
## 122.82853 20.00825 57.42933
# Arabalar hızlanma süreleri (qsec) açısından en homojen.
# En heterojen değişkenler: disp, carb
# vs ve am kategorik değişkenler onları yorumlamadım.
# lapply ve mapply Farkı
#Tek bir sütunun (mesela sadece mpg) ortalamasını alacaksan -> lapply veya sapply.
#İki sütunu (mesela hp ve wt) birbirine çarpıp, bölüp, birleştirip yeni bir şey üreteceksen -> mapply.
sapply(mtcars,mean) # Her sütunun ortalamasını alır
## mpg cyl disp hp drat wt qsec
## 20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750
## vs am gear carb
## 0.437500 0.406250 3.687500 2.812500
mapply(function(x,y) {x/y}, mtcars$hp,mtcars$wt) # Her arabanın beygir gücünü (hp) ağırlığına (wt) böler. Her bir arabanın güç/ağırlık oranını verir.
## [1] 41.98473 38.26087 40.08621 34.21462 50.87209 30.34682 68.62745 19.43574
## [9] 30.15873 35.75581 35.75581 44.22604 48.25737 47.61905 39.04762 39.63864
## [17] 43.03087 30.00000 32.19814 35.42234 39.35091 42.61364 43.66812 63.80208
## [25] 45.51365 34.10853 42.52336 74.68605 83.28076 63.17690 93.83754 39.20863