library(dplyr)

Öğrenme Günlüğüm

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.

Kendi Denemelerim

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