Bu haftaki dersimizde matrisler, listeler ve Markdown konu başlıkları üzerinde çalıştık.

Matrisler

Matris oluşturmak için matrix() fonksiyonunu kullanabiliriz.

m1 <- matrix(1:12, ncol = 3, nrow = 4); m1
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12

Matrisin transpozunu almak için t() fonksiyonunu kullanabiliriz.

t(m1)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

Bir matrisi bir sayıyla veya bir vektörle çarpabiliriz.

2 * m1
##      [,1] [,2] [,3]
## [1,]    2   10   18
## [2,]    4   12   20
## [3,]    6   14   22
## [4,]    8   16   24
c(1,2,3) * m1
##      [,1] [,2] [,3]
## [1,]    1   10   27
## [2,]    4   18   10
## [3,]    9    7   22
## [4,]    4   16   36

Veri Setleri

data.frame() fonksiyonu ile aynı uzunluktaki vektörlerden bir veri seti oluşturulabiliriz.

ad  <-  c("Ali","Elif","Su","Deniz","Aras", "Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162, 169,158,160,164)
kilo <- c(55,55,57,50,48,65, 58,62,45,47)
beden <- c("S","M","S","M","S", "L","M","L","S","S")
beden <- factor(beden)


(df <- data.frame(ad,boy, kilo, beden))
##       ad boy kilo beden
## 1    Ali 160   55     S
## 2   Elif 165   55     M
## 3     Su 170   57     S
## 4  Deniz 155   50     M
## 5   Aras 167   48     S
## 6   Berk 162   65     L
## 7    Can 169   58     M
## 8    Ece 158   62     L
## 9    Efe 160   45     S
## 10  Arda 164   47     S

Veri Setlerinden Eleman Seçme

dfveri setindeki 1.satırın seçilmesi için ;

df[1,]
##    ad boy kilo beden
## 1 Ali 160   55     S

dfveri setindeki 1.sütunun seçilmesi için ;

df[,1]
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"

kodları kullanılabilir.

Veri seçim işlemi için subset()fonksiyonu da kullanılabilir.

subset(df, boy >165)
##     ad boy kilo beden
## 3   Su 170   57     S
## 5 Aras 167   48     S
## 7  Can 169   58     M

Eleman Ekleme

Veri setine yeni sütun eklemeyi $ sembolüyle yapılabiliriz.

df2 <- data.frame(
      S1 = sample(0:100,20),
      S2 = runif(n=20 ,min= 50 , max=70)
)
head(df2)
##   S1       S2
## 1 68 66.23412
## 2 60 53.39157
## 3 76 64.30083
## 4 33 58.64730
## 5 57 61.61151
## 6 39 63.24558
df2$S3 <- sample(60:80,20,replace = TRUE)
head(df2)
##   S1       S2 S3
## 1 68 66.23412 61
## 2 60 53.39157 64
## 3 76 64.30083 60
## 4 33 58.64730 75
## 5 57 61.61151 76
## 6 39 63.24558 69

Eleman Çıkarma

Veri setinden istenilen sütun - sembolüyle yapabiliriz.

head(df2,3)
##   S1       S2 S3
## 1 68 66.23412 61
## 2 60 53.39157 64
## 3 76 64.30083 60
df2 <- df2[,-4] 
head(df2,3)
##   S1       S2 S3
## 1 68 66.23412 61
## 2 60 53.39157 64
## 3 76 64.30083 60

Dersin bu noktasından sonra R Markdown dosyası üzerinde çalışmalar yaptık. R Markdownda içindekiler tablosu, uygun başlıklar, kod parçaları, tablolar, resimler, satır içi R ve bir kaynakça üzerinde çalışmalar yaptık.

YAML Header

Dosyanın en üstünde yer alan bu kısım oluşturalacak belgede istedğimiz ayarlamaları yapabileceğimiz bölümdür. Bu kısımda yazar bilgisi, başlıklandırma, yazı tipi , tablolar gibi içerikle ilgili kısımlarda ayarlamalar yapabiliriz.

Kod Blokları ve Satır İçi Kodlar

Metne eklemek için görüntüler, tablolar ve hesapalamalar oluşturan kod parçaları ekleyebiliriz.

library(datasets)
data(iris)

Şimdi aşağdaki kod yardımıyla setosa ve virginica çiçek türlerinde yaprak uzunluklarını analiz edebiliriz.

# analiz
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
setosa_petal <-filter(iris, Species == "setosa") %>%  pull(Petal.Length)
virginica_petal <-filter(iris, Species == "virginica") %>%  pull(Petal.Length)
petal_test <-t.test(setosa_petal, virginica_petal)

# rapor edilecek degerleri yorumlama
t <- petal_test$statistic %>% round(2)
df <- petal_test$parameter %>% round(1)
p <- petal_test$p.value %>% round(3)
# p-değerleri < .001 ata
p_symbol <- ifelse(p < .001, "<", "=") ## kodun bu kısmı elde edilen p değeri .001'den küçük ise p_symbol değerine <, değil ise = atar.
if (p < .001) p <- .001 

# sonucları birleştirme
petal_result <- glue::glue("t = {t}, df = {df}, p {p_symbol} {p}")

Tablolar

Çalışmalarımızın yöntem bölümüne tablo eklemek istedğimizdE aşağıdaki kodu kullanabiliriz.

ozet_tablo <- iris %>%
  group_by(Species) %>%
  summarise(
    n = n(),
    ortalama = mean(Petal.Length),
    sd = sd(Petal.Length)
  )
ozet_tablo
## # A tibble: 3 × 4
##   Species        n ortalama    sd
##   <fct>      <int>    <dbl> <dbl>
## 1 setosa        50     1.46 0.174
## 2 versicolor    50     4.26 0.470
## 3 virginica     50     5.55 0.552

Bu tabloyu daha okunaklı hale getirmek için knitr::kable() işlevini kullanabiliriz.

yeni_ad <- c("cicek turu", "frekans", "ortalama", "Sd")

knitr::kable(ozet_tablo,
             digits = 2,
             col.names = yeni_ad,
             caption = "Petal Uzulukları için Özet Tablo")
Petal Uzulukları için Özet Tablo
cicek turu frekans ortalama Sd
setosa 50 1.46 0.17
versicolor 50 4.26 0.47
virginica 50 5.55 0.55