#ALIŞTIRMA 1: dplyr Paketi ile Veri Düzenleme

#Veri seti üzerinde gerçekleştirilecek işlemlere yönelik olarak gerekli paketler library() fonksiyonu ile çağrılmıştır.

library(tidyverse)
library(openintro)
library(ggplot2)
library(dplyr)
library(readr)

#Alıştırma kapsamında ele alınacak olan “student_mat” veri setinin uzantısının “.csv” olmasına bağlı olarak readr() paketinde bulunan read_delim() fonksiyonu ile veri seti RStudio’ya tanımlanmıştır. Ardından view() fonksiyonu ile setin RStudio üzerinden incelemesi gerçekleştirilmiştir.

student_mat <- read_delim("set.csv", 
    delim = ";", escape_double = FALSE, trim_ws = TRUE)
## Rows: 395 Columns: 33
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (17): school, sex, address, famsize, Pstatus, Mjob, Fjob, reason, guardi...
## dbl (16): age, Medu, Fedu, traveltime, studytime, failures, famrel, freetime...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(student_mat)

#Yüklenen “student_mat” veri setinin değişkenlerini ve setin genel yapısını gözlemlemek amacıyla head() komutuyla ilk satırlarda bulunan bilgileri setten getirilmiştir. Set genel yapısıyla incelendiğinde 33 değişkene sahiptir.

head(student_mat)
## # A tibble: 6 × 33
##   school sex     age address famsize Pstatus  Medu  Fedu Mjob     Fjob    reason
##   <chr>  <chr> <dbl> <chr>   <chr>   <chr>   <dbl> <dbl> <chr>    <chr>   <chr> 
## 1 GP     F        18 U       GT3     A           4     4 at_home  teacher course
## 2 GP     F        17 U       GT3     T           1     1 at_home  other   course
## 3 GP     F        15 U       LE3     T           1     1 at_home  other   other 
## 4 GP     F        15 U       GT3     T           4     2 health   servic… home  
## 5 GP     F        16 U       GT3     T           3     3 other    other   home  
## 6 GP     M        16 U       LE3     T           4     3 services other   reput…
## # ℹ 22 more variables: guardian <chr>, traveltime <dbl>, studytime <dbl>,
## #   failures <dbl>, schoolsup <chr>, famsup <chr>, paid <chr>,
## #   activities <chr>, nursery <chr>, higher <chr>, internet <chr>,
## #   romantic <chr>, famrel <dbl>, freetime <dbl>, goout <dbl>, Dalc <dbl>,
## #   Walc <dbl>, health <dbl>, absences <dbl>, G1 <dbl>, G2 <dbl>, G3 <dbl>

#Süreçte, “student_mat” veri seti üzerinde yaptığım değişiklikleri daha rahat takip edebilmek amacıyla “<-” işareti ile yeni veri setleri tanımlanmıştır. Bu kapsamda, ilk olarak select() fonksiyonunu kullanarak “student_mat” veri setinden school, sex, age, Medu, Fedu, studytime, G1, G2 ve G3 değişkenlerini seçilerek, “student_mat_v2” veri seti tanımlanmıştır.

student_mat_v2 <-student_mat %>%  select("school","sex","age","Medu","Fedu","studytime","G1","G2","G3")
student_mat_v2
## # A tibble: 395 × 9
##    school sex     age  Medu  Fedu studytime    G1    G2    G3
##    <chr>  <chr> <dbl> <dbl> <dbl>     <dbl> <dbl> <dbl> <dbl>
##  1 GP     F        18     4     4         2     5     6     6
##  2 GP     F        17     1     1         2     5     5     6
##  3 GP     F        15     1     1         2     7     8    10
##  4 GP     F        15     4     2         3    15    14    15
##  5 GP     F        16     3     3         2     6    10    10
##  6 GP     M        16     4     3         2    15    15    15
##  7 GP     M        16     2     2         2    12    12    11
##  8 GP     F        17     4     4         2     6     5     6
##  9 GP     M        15     3     2         2    16    18    19
## 10 GP     M        15     3     4         2    14    15    15
## # ℹ 385 more rows

#“Student_mat_v2” veri seti üzerinden 16 ve 17 yaşında bulunan erkek çocuklarının filter() fonksiyonu ile filtrelenmiştir. Filtrelenen bilgiler “student_mat_v3” olarak tanımlanmıştır.Bu filtreleme snucundan 90 tane veri saptanmıştır.

student_mat_v3 <- student_mat_v2 %>% filter(age %in% c(16, 17), sex == "M")
student_mat_v3
## # A tibble: 90 × 9
##    school sex     age  Medu  Fedu studytime    G1    G2    G3
##    <chr>  <chr> <dbl> <dbl> <dbl>     <dbl> <dbl> <dbl> <dbl>
##  1 GP     M        16     4     3         2    15    15    15
##  2 GP     M        16     2     2         2    12    12    11
##  3 GP     M        17     3     2         1     6     5     5
##  4 GP     M        16     4     3         1     8    10    10
##  5 GP     M        16     4     2         2    15    15    16
##  6 GP     M        16     2     2         2    13    13    12
##  7 GP     M        16     3     4         2    11    11    11
##  8 GP     M        16     4     4         2    10    12    11
##  9 GP     M        16     3     2         1    12    14    15
## 10 GP     M        16     4     4         3    15    16    15
## # ℹ 80 more rows

#Filtrelenmiş olan “student_mat_v3” setinde bulunan 16 ve 17 yaşında erkek öğrencilerin “G1”, “G2” ve “G3” puanları sırayıla 0.25, 0.25 ve 0.50 katsayılarıyla ağırlıklandırılmıştır. Bunun için mutate() fonksiyonu kullanılmıştır. Ağırlıklandırılmış puanların olduğu set ise “student_mat_v4” olarak tanımlanmıştır. Ağırlıklandırmayı seçmemin sebebi ise sadece tek bir ağırlıklandırılmış puanla karar verilmesini deneme düşüncemdir.

student_mat_v4 <- student_mat_v3 %>%
  mutate(agirlikli_puan = (G1 * 0.25) + (G2 * 0.25) + (G3 * 0.50))
student_mat_v4
## # A tibble: 90 × 10
##    school sex     age  Medu  Fedu studytime    G1    G2    G3 agirlikli_puan
##    <chr>  <chr> <dbl> <dbl> <dbl>     <dbl> <dbl> <dbl> <dbl>          <dbl>
##  1 GP     M        16     4     3         2    15    15    15          15   
##  2 GP     M        16     2     2         2    12    12    11          11.5 
##  3 GP     M        17     3     2         1     6     5     5           5.25
##  4 GP     M        16     4     3         1     8    10    10           9.5 
##  5 GP     M        16     4     2         2    15    15    16          15.5 
##  6 GP     M        16     2     2         2    13    13    12          12.5 
##  7 GP     M        16     3     4         2    11    11    11          11   
##  8 GP     M        16     4     4         2    10    12    11          11   
##  9 GP     M        16     3     2         1    12    14    15          14   
## 10 GP     M        16     4     4         3    15    16    15          15.2 
## # ℹ 80 more rows

#mutate() fonksiyonu ile, 16 ve 17 yaşındaki erkek öğrencilerin ağırlıklı puanları hesaplanmış ve bu puanlara göre öğrencilerin “geçerli” veya “geçersiz” puan durumları yeni bir sütunda gösterilmiştir. Süreçte 10 puan kesme puanı olarak kabul edilmiştir. Bu yapı ise “student_mat_v5” üzerinde tanımlanmıştır.

student_mat_v5 <- student_mat_v4 %>%
  mutate(agirlikli_basari = if_else(agirlikli_puan >= 10, "Gecerli Puan", "Gecersiz Puan"))
student_mat_v5
## # A tibble: 90 × 11
##    school sex     age  Medu  Fedu studytime    G1    G2    G3 agirlikli_puan
##    <chr>  <chr> <dbl> <dbl> <dbl>     <dbl> <dbl> <dbl> <dbl>          <dbl>
##  1 GP     M        16     4     3         2    15    15    15          15   
##  2 GP     M        16     2     2         2    12    12    11          11.5 
##  3 GP     M        17     3     2         1     6     5     5           5.25
##  4 GP     M        16     4     3         1     8    10    10           9.5 
##  5 GP     M        16     4     2         2    15    15    16          15.5 
##  6 GP     M        16     2     2         2    13    13    12          12.5 
##  7 GP     M        16     3     4         2    11    11    11          11   
##  8 GP     M        16     4     4         2    10    12    11          11   
##  9 GP     M        16     3     2         1    12    14    15          14   
## 10 GP     M        16     4     4         3    15    16    15          15.2 
## # ℹ 80 more rows
## # ℹ 1 more variable: agirlikli_basari <chr>

#“student_mat_v5” veri seti, “agirlikli_basari” değişkenine göre group_by() fonksiyonu ile gruplandırılmıştır. Her bir başarı grubu için öğrencilerin ağırlıklı puanlarının ortalaması (agirlikli_puan_ort) ve yaş ortalaması (yas_ort) summarise() fonksiyonu ile özet niteliğinde hesaplanmıştır. Elde edilen sonuçlar, her başarı grubuna ait özet istatistikleri içeren student_mat_v6 veri seti üzerinde tanımlanmıştır. Bu doğrultuda geçerli puan alanların yaş ortalamasının 16.41, geçersiz puan alanların yaş ortalamasının 16.50 olduğu saptanmıştır. Bunun yanı sıra ağırlıklı puan ortalaması açısından inceleme gerçekleştirildiğinde geçerli puan alanların 13.03’lük ortalamaya, geçersiz puan alanların ise 6.81’lik bir ortalamaya sahip olduğu saptanmıştır.

student_mat_v6 <-student_mat_v5 %>% 
  group_by(agirlikli_basari) %>% 
  summarise(agirlikli_puan_ort = mean(agirlikli_puan), yas_ort = mean(age))
student_mat_v6
## # A tibble: 2 × 3
##   agirlikli_basari agirlikli_puan_ort yas_ort
##   <chr>                         <dbl>   <dbl>
## 1 Gecerli Puan                  13.0     16.4
## 2 Gecersiz Puan                  6.81    16.5

#Gerçekleştirilen analizler sonucunda, student_mat_v5 veri seti üzerinde öğrenciler 17 yaşından 16 yaşına doğru sıralanmıştır. Bu işlem, arrange(-age) fonksiyonu kullanılarak gerçekleştirilmiş ve öğrencilerin yaşlarına göre azalan düzende sıralanması sağlanmıştır.

student_mat_v5 %>% 
  arrange(-age)
## # A tibble: 90 × 11
##    school sex     age  Medu  Fedu studytime    G1    G2    G3 agirlikli_puan
##    <chr>  <chr> <dbl> <dbl> <dbl>     <dbl> <dbl> <dbl> <dbl>          <dbl>
##  1 GP     M        17     3     2         1     6     5     5           5.25
##  2 GP     M        17     2     1         1     8     8    10           9   
##  3 GP     M        17     1     3         2     9     7     8           8   
##  4 GP     M        17     3     4         2    10     0     0           2.5 
##  5 GP     M        17     2     1         1     5     0     0           1.25
##  6 GP     M        17     1     2         1    16    12    13          13.5 
##  7 GP     M        17     2     1         1     7     6     0           3.25
##  8 GP     M        17     1     3         1    10    10    10          10   
##  9 GP     M        17     1     1         2     5     8     7           6.75
## 10 GP     M        17     4     4         2    13    11    10          11   
## # ℹ 80 more rows
## # ℹ 1 more variable: agirlikli_basari <chr>

#Yukarıda gerçekleştirilen sıralamanın yanı sıra, yaş değişkeni sürece dahil edilmeden, öğrencilerin ağırlıklı puan değerlerine göre küçükten büyüğe doğru sıralanması amacıyla arrange() fonksiyonu kullanılmıştır. Bu sıralama dahilinde minimum 1.25 puan alan öğrencinin olduğu gözlenmektedir.

student_mat_v5 %>% 
  arrange(agirlikli_puan)
## # A tibble: 90 × 11
##    school sex     age  Medu  Fedu studytime    G1    G2    G3 agirlikli_puan
##    <chr>  <chr> <dbl> <dbl> <dbl>     <dbl> <dbl> <dbl> <dbl>          <dbl>
##  1 GP     M        17     2     1         1     5     0     0           1.25
##  2 GP     M        16     4     3         1     6     0     0           1.5 
##  3 GP     M        16     1     2         1     7     0     0           1.75
##  4 GP     M        17     3     4         2    10     0     0           2.5 
##  5 GP     M        16     3     4         1     6     5     0           2.75
##  6 GP     M        16     4     4         1     7     6     0           3.25
##  7 GP     M        17     2     1         1     7     6     0           3.25
##  8 GP     M        17     3     2         1     6     5     5           5.25
##  9 GP     M        17     3     3         2     6     5     6           5.75
## 10 GP     M        16     4     4         1     7     7     5           6   
## # ℹ 80 more rows
## # ℹ 1 more variable: agirlikli_basari <chr>

#ALIŞTIRMA 2: ggplot2 Paketi ile Görselleştirme

#Bölüm kapsamında Doç. Dr. Kübra ATALAY KABASAKAL tarafından önerilmiş 3 grafiği ve kendi oluşturduğum 3 grafiği sunmuş bulunmaktayım.

#Bu bölüm kapsamında “student_mat” veri seti kapsamında veri görselleştirme gerçekleştirilecektir.Süreçte ggplot2() önceden aktif edildiğinden dolayı tekrardan yazılmamamıştır.#Birinci görselleştirme kapsamında Öğrencilerin final notlarına yönelik yani “G3” kapsamında histogram grafiği oluşturulmuştur. Bu histogramın oluşturulması sürecinde ggplot fonksiyonu kullanılmıştır. Ana yapı olarak “student_mat” veri seti kabul edilmiş olmakla birlikte “x” değişkeni olarak G3 ataması yapılmıştır. Ardından geom_histogram() fonksiyonuyle birlikte histogramın oluşturulması için temel yapı atanmıştır. Son olarak labs fonksiyonuyla birlikte x-y değişkenleri ve histograma yönelik isim tanımlaması gerçekleştilmiştir. Elde edilen histogram grafiği doğrultusunda iki farklı puan yığılması olduğu gözlenmektedir. Birinci yığılma “0” puan aralığında gözlenirken, ikinci yığılma 9-11 puan aralığında gözükmektedir.

histogram <- ggplot(student_mat,aes(x=G3))+
  geom_histogram()+
  labs(x= "Final Notları",
       y= "Ogrenci Sayisi",
       title="Ogrencilerin Final Notları")
histogram
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.

#İkinci görselleştirme kapsamında ggplot2() ile bar grafiği oluşturulması amaçlanmıştır. Süreçte öncelikle final sınavı başarı ortalamasına yönelik bir sonuç elde edilmediğinde dolayı cinsiyete dayalı şekilde ortalama puan hesaplaması yapılmıştır. Buna yönelik olarak group_by() fonksiyonu ile cinsiyet temelli gruplama sağlanmaştır, ardından summarise() fonksiyonu ile cinsiyet temelli ortalama puanların hesaplaması sağlanmıştır. Ortalama puanların hesaplanmasının ardından ggplot() fonksiyonu kapsamında x değişkeni cinsiyet, y değişkeni ortalama puan olarak atanmıştır. Atamaların gerçekleştirilmesinin ardından geom_col() ve theme_classic() fonksiyonlarıyla birlikte klasik bir görünüşte bar grafiği oluşturulmuştur. Elde edilen bar grafiği doğrultusunda erkeklerin kadınlara göre daha yüksek not ortalamasına sahip olduğu ifade edilebilir.

basari_ortalama <- student_mat %>%
  group_by(sex) %>%
  summarise(ortalama_puan = mean(G3))
basari_ortalama
## # A tibble: 2 × 2
##   sex   ortalama_puan
##   <chr>         <dbl>
## 1 F              9.97
## 2 M             10.9
bar_grafigi <- ggplot(basari_ortalama, aes(x=sex,y=ortalama_puan))+
  geom_col()+
  theme_classic()+
  labs(x="Cinsiyet (F = Kadın, M = Erkek)",
       y="ortalama puan",
       title= "Cinsiyete Gore Final Ortalamasi")
bar_grafigi

#Üçüncü görselleştirme kapsamında, aile desteği alan ve almayan öğrencilerin not dağılımlarına yönelik “boxplot” oluşturulmuştur.Süreçte ggplot() fonksiyonu kapsamında x değişkeni aile desteği durumu, y değişkeni final puanı olarak atanmıştır. Atamaların gerçekleştirilmesinin ardından geom_boxplot() ve theme_minimal() fonksiyonlarıyla birlikte minimal bir görünüşte boxplot grafiği oluşturulmuştur. Bu grafik doğrultusunda, aile desteği olan ve olmayan öğrencilerin medyan notlarının her iki grupta da yaklaşık 11 civarında olup neredeyse aynı olduğunu göstermektedir. Bu, ortalama başarı açısından aile desteğinin büyük bir fark yaratmadığı anlamına gelmektedir. Ayrıca her iki grupta da uç değer olarak “0” gözlenmiştir.

boxplot_grafigi <- ggplot(student_mat, aes(x = famsup, y = G3)) +
  geom_boxplot() +
  theme_minimal() +
  labs(
    x = "Aile Destegi (var-yok)",
    y = "Final Notu",
    title = "Aile Destegine Gore Ogrencilerin Not Dagılımları"
  ) +
   scale_x_discrete(labels = c("no" = "Yok", "yes" = "Var"))
boxplot_grafigi

#Dördüncü görselleştirme kapsamında kendi oluşturduğum kod aracılığıyla öğrencilerin birinci ve ikinci dönem puanları arasında ilişkiyi, çalışma saatlerini renklendirerek ortaya koymaya çalışmış bulunmaktayım. Bu sürece yönelik olarak ggplot() fonksiyonu kapsamında x değişkeni G1, y değişkeni G2 olarak, renklendirme değişkeni olarak “studytime” atanmıştır. Ardından saçılım grafiğini elde etmek amacıyla geom_point() fonksiyonu, doğrusal çizgiyi elde etmek için ise geom_smooth() fonksiyonu kullanılmıştır. Tema olarak klasik görünüm tercih edilmekle birlikte labs() fonksiyonu aracılığıyla x, y ve color kısımlarına isim ataması gerçekleştirilmiştir. Elde edilen saçılım grafiği doğrultusunda iki dönem arasında pozitif yönlü ilişki olduğu ve doğrusal çizgi boyunca net çizgi etrafında toplanılmasına bağlı olarak tutarlı sonuçlar elde edildiği ifade edilebilir. Ancak, grafikte Birinci Dönem notu iyi olmasına rağmen İkinci Dönemde 0 puan alan (aykırı) öğrenciler de mevcuttur.

sacilim_grafigi <- ggplot(student_mat, aes(x= G1,y= G2, color = studytime)) +
  geom_point()+
  geom_smooth(method="lm", se= FALSE)+
  theme_classic()+
  labs(x="BirinciDonem\n",
       y="IkinciDonem\n",
       title = "Donemler arası puan sacilim grafigi",
       color="calisma saati")
sacilim_grafigi
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The following aesthetics were dropped during statistical transformation:
## colour.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
##   the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
##   variable into a factor?

#Beşinci görselleştirme kapsamında, geom() fonksiyonu içerisinde gördüğüm keman grafiğini denemiş bulunmaktayım. Süreç içerisinde öğrencilerin babalarının eğitim düzeyi ve final notu arasındaki ilişkiyi görmeye yönelik ggplot() fonksiyonu içerisinde bulunan geom_violin() fonksiyonu ile karanlık temada keman grafiği oluşturmuş bulunmaktayım.Elde edilen grafik doğrultusunda babaların eğitim seviyesi arttıkça not dağılımındaki değişimin arttığı gözlenmektedir. Daha detaylı inceleme gerçekleşetirildiğinde eğitimsiz babaların çocuklarında notların daha çok ortalama üstü aralıkta bulunduğu ve homojen yapının sağlandığı söylenebilir. Daha eğitimli babaların çocuklarında ise genel olarak puan dağılımının daha geniş bir aralıkta olduğu gözlenmiştir. Bu doğrultuda yüksek eğitimli babaların çocukları arasında hem çok başarılı hem de çok başarısız öğrencilerin bulunduğunu ve notlar arasındaki farkın büyüdüğü gözlemlenmiştir.

keman_grafigi <- ggplot(student_mat, aes(x = factor(Fedu), y = G3)) +  
  geom_violin() +
  theme_dark() +
  labs(x = "Baba Eğitim Durumu", y = "Final Notu", title = "Baba Eğitim Durumu ve Final Notu")
keman_grafigi

#Altıncı görselleştirme kapsamında öğrencilerin ikinci dönem notlarına yönelik okul tipi temelli histogram grafiği oluşturulmuştur. Bu histogramın oluşturulması sürecinde ggplot fonksiyonu kullanılmıştır. Ana yapı olarak “student_mat” veri seti kabul edilmiş olmakla birlikte “x” değişkeni olarak G2 ataması yapılmıştır. Ayrıca bu süreçte fill= yapısını ilk defa kullanarak okul tipine göre şekillendirme denemiş bulunmaktayım. Ardından geom_histogram fonksiyonuyla histogram ataması velabs fonksiyonuyla birlikte x ile fill değişkenleri için ve isim tanımlaması gerçekleştilmiştir.Bu histogram grafiği doğrultusunda “GP” okulunda okuyanların daha geniş bir puan ranjında olduğu, “MS” okulunun ise daha homojen bir yapıda olduğu gözlenmektedir. Genel olarak grafik incelendiğinde, her iki okul türünde de uç değer olarak görülebilecek yapılar olduğu söylenebilir.

fill_histogram <- ggplot(student_mat, aes(x = G2, fill = school)) +
  geom_histogram() +
    theme_minimal() +
  labs(
    x = "Ikıncı Donem",
    y = "Frekans",
    title = "Okul Turune Gore Ikıncı Puanlarının Dagılımı",
    fill = "Okul Turu"
  )
fill_histogram
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.

#RMarkDown’dan Ogrendiklerim

#Bu süreçte RMarkdown yapısını kullanmayı öğrenirken, programlama ve raporlama süreçlerinin nasıl bütünleştiğini deneyimleme fırsatı buldum. Öncelikle, RStudio arayüzü üzerinden “File > New File > RMarkdown” seçeneğiyle yeni bir RMarkdown dosyası oluşturulabileceğini öğrendim. Bu aşamada dosya adı, çıktı formatı ve diğer temel özelliklerin belirlenmesi gerektiğini fark ettim.

#RMarkdown çalışma ortamında “Source” ve “Visual” olmak üzere iki farklı düzenleme sekmesi bulunduğunu gözlemledim. “Source” sekmesinde kod temelli bir yazım yapılırken, “Visual” sekmesinin Microsoft Word benzeri bir düzenleme ortamı sunduğunu gördüm. Bu sekme sayesinde metinleri italik veya kalın biçimlendirebilmek, yazı boyutunu değiştirebilmek, bağlantı ve görsel eklemek gibi işlemleri oldukça kolay bir şekilde gerçekleştirebildim.

#Kod blokları (chunk) oluşturma süreci de RMarkdown’ın önemli bir özelliği olarak dikkatimi çekti. Ctrl + Alt + I kısayolu ile veya “Insert” sekmesi üzerinden kolayca yeni bir chunk eklenebildiğini öğrendim. Bu alanlar aracılığıyla farklı fonksiyonlar ve veri işlemleri doğrudan RStudio ortamına entegre edilebiliyor. Ayrıca “Insert” sekmesinin yalnızca kod blokları eklemekle sınırlı kalmadığını, tablo, kaynakça ve benzeri yapıları da belgeye dahil etmeye olanak sağladığını keşfettim.

#Genel olarak bu süreç, RMarkdown’ın yalnızca bir kodlama aracı değil, aynı zamanda veri analizi sonuçlarını etkili biçimde sunmayı sağlayan güçlü bir raporlama aracı olduğunu fark etmemi sağladı. Kısayollarla gerçekleştirilebilen işlemlerin aynı zamanda belirli fonksiyonlarla ve kodlarla da yapılabileceğini görmek, programlama becerilerimi daha esnek bir şekilde kullanmamı sağladı. Bu deneyim, veri analizi süreçlerimi hem daha sistematik hem de profesyonel bir yapıya dönüştürmemde önemli bir katkı sundu.

#Son olarak bu ödev sayesinde sadece RMarkdown öğrenmeyi değil, aynı zamanda ele aldığım fonksiyonlarda yaptığım hataları saptamam açısından bana önemli bir katkı sağladığını ifade edebilirim. Bu doğrultuda bu yapının öğrenmem açısından önemli bir paydaş olabileceğini söyleyebilirim. Gelecekte daha fazla uygulama yaparak R diline ve RMarkdown ortamına daha fazla hakim olabileceğimi düşünüyorum.