R ODEV

#veri yukleme

student_mat <- read_excel("C:/Users/Lenovo/Downloads/student-mat.xlsx")
View(student_mat)

#Alıştırma 1

#Belirli sütunları seçin (select())

student_mat %>% 
  select(school, sex, age)
## # A tibble: 395 × 3
##    school sex     age
##    <chr>  <chr> <dbl>
##  1 GP     F        18
##  2 GP     F        17
##  3 GP     F        15
##  4 GP     F        15
##  5 GP     F        16
##  6 GP     M        16
##  7 GP     M        16
##  8 GP     F        17
##  9 GP     M        15
## 10 GP     M        15
## # ℹ 385 more rows

#Belirli bir koşula göre filtreleme yapın (filter())

student_mat %>% 
  filter(schoolsup == "yes", nursery == "no")
## # A tibble: 8 × 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        15 U       GT3     T           4     4 services teacher other 
## 2 GP     F        16 U       GT3     T           1     1 services servic… course
## 3 GP     F        15 R       GT3     T           1     1 other    other   reput…
## 4 GP     M        15 U       GT3     T           2     3 other    servic… course
## 5 GP     M        15 U       GT3     T           2     3 other    other   home  
## 6 GP     M        16 R       GT3     T           4     3 services other   reput…
## 7 GP     M        16 U       GT3     T           3     3 at_home  other   reput…
## 8 GP     F        19 U       LE3     T           1     1 at_home  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>

#Yeni bir sütun oluşturun (mutate())

student_mat <- student_mat %>% 
  mutate(parent_edu = (Medu + Fedu) / 2)

student_mat <- student_mat %>% 
  mutate(parent_edu_cat = case_when(
  parent_edu < 1 ~ "low",
  parent_edu < 3 ~ "medium",
  TRUE ~ "high"))

#Özetleme işlemleri yapın (group_by() + summarise())

student_mat %>%
  group_by(parent_edu_cat) %>%
  summarise(ort_failures = mean(failures)) 
## # A tibble: 3 × 2
##   parent_edu_cat ort_failures
##   <chr>                 <dbl>
## 1 high                  0.161
## 2 low                   1.5  
## 3 medium                0.488
#aile eğitimi düştükçe başarısızlık artmaktadır.

student_mat %>%
  group_by(parent_edu_cat) %>%
  summarise(higher_yes_orani = mean(higher == "yes") * 100) 
## # A tibble: 3 × 2
##   parent_edu_cat higher_yes_orani
##   <chr>                     <dbl>
## 1 high                       99.5
## 2 low                        50  
## 3 medium                     91.0
#aile eğitimi arttıkça yüksek öğrenime devam isteği artmaktadır.

#Veriyi sıralayın (arrange())

student_mat %>%
  arrange(parent_edu_cat)
## # A tibble: 395 × 35
##    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  teach… course
##  2 GP     F        15 U       GT3     T           4     2 health   servi… home  
##  3 GP     F        16 U       GT3     T           3     3 other    other  home  
##  4 GP     M        16 U       LE3     T           4     3 services other  reput…
##  5 GP     F        17 U       GT3     A           4     4 other    teach… home  
##  6 GP     M        15 U       GT3     T           3     4 other    other  home  
##  7 GP     F        15 U       GT3     T           4     4 teacher  health reput…
##  8 GP     M        15 U       LE3     T           4     4 health   servi… course
##  9 GP     M        15 U       GT3     T           4     3 teacher  other  course
## 10 GP     F        16 U       GT3     T           4     4 health   other  home  
## # ℹ 385 more rows
## # ℹ 24 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>,
## #   parent_edu <dbl>, parent_edu_cat <chr>
student_mat %>%
  arrange(school, desc(age))
## # A tibble: 395 × 35
##    school sex     age address famsize Pstatus  Medu  Fedu Mjob     Fjob   reason
##    <chr>  <chr> <dbl> <chr>   <chr>   <chr>   <dbl> <dbl> <chr>    <chr>  <chr> 
##  1 GP     M        22 U       GT3     T           3     1 services servi… other 
##  2 GP     M        20 U       GT3     A           3     2 services other  course
##  3 GP     F        19 U       GT3     T           0     1 at_home  other  course
##  4 GP     M        19 U       GT3     T           3     2 services at_ho… home  
##  5 GP     F        19 U       GT3     T           3     3 other    other  reput…
##  6 GP     M        19 U       LE3     A           4     3 services at_ho… reput…
##  7 GP     F        19 U       GT3     T           3     3 other    servi… home  
##  8 GP     F        19 U       GT3     T           4     4 health   other  reput…
##  9 GP     M        19 U       GT3     T           3     3 other    other  home  
## 10 GP     M        19 U       GT3     T           4     4 teacher  servi… reput…
## # ℹ 385 more rows
## # ℹ 24 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>,
## #   parent_edu <dbl>, parent_edu_cat <chr>
student_mat %>% 
  group_by(parent_edu_cat) %>%
  summarise(higher_yes_orani = mean(higher == "yes") * 100) %>%
  arrange(desc(higher_yes_orani))
## # A tibble: 3 × 2
##   parent_edu_cat higher_yes_orani
##   <chr>                     <dbl>
## 1 high                       99.5
## 2 medium                     91.0
## 3 low                        50
student_mat %>%
  group_by(school) %>%
  summarise(ort_failures = mean(failures)) %>%
  arrange(ort_failures) 
## # A tibble: 2 × 2
##   school ort_failures
##   <chr>         <dbl>
## 1 GP            0.318
## 2 MS            0.457
#"GP" – Gabriel Pereira veya "MS" – Mousinho da Silveira okullarıdır. 

#Alıştırma 2

#İki adet grafik oluşturunuz. Örnek olarak aşağıdaki grafik türlerinden en az ikisini oluşturabilirsiniz.

#Ama grafiği kendinizi yaratırsanız daha mennun olurum. Oluşturduğunuz grafikleri yorumlayınız.

#Grafik1

grafik1_data <- student_mat %>%
  group_by(parent_edu_cat) %>%
  summarise(higher_yes_orani = mean(higher == "yes") * 100)

ggplot(grafik1_data, aes(x = parent_edu_cat, y = higher_yes_orani, fill = parent_edu_cat)) +
  geom_bar(stat = "identity") +
  labs(title = "Aile Egitim Duzeyine Gore Yuksekogretime Devam Etme İstegi (%)",
    x = "\nAile Egitim Duzeyi",
    y = "Yuksekogretime Devam Etme Oranı (%)\n",
    fill = "Aile Egitim Kategorisi") +
  theme_minimal() +
  scale_fill_brewer(palette = "Blues")

#yorum: Ailelerin eğitim düzeyi arttıkça çocuklarının yükseköğretime devam etme isteği de artış göstermektedir.
#Bu sonuç, ailelerin eğitim geçmişinin öğrencilerin eğitim hedefleri üzerinde bir etkisi olabileceğini düşündürmektedir.

#Grafik2

student_mat$famrel <- factor(student_mat$famrel,
                             levels = 1:5,
                             labels = c("1 – cok kotu",
                                        "2 – kotu",
                                        "3 – orta",
                                        "4 – iyi",
                                        "5 – mukemmel"))
ggplot(student_mat, aes(x = famrel, y = G3)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(title = "Aile İliskilerinin Kalitesi ve Final Notu",
    x = "\nAile iliskilerinin Kalitesi",
    y = "Final Notu\n")+
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

##yorum: Aile ilişkilerinin kalitesi arttıkça final notlarının da biraz yükselme eğiliminde olduğu ancak her kalite düzeyinde hem düşük hem yüksek notlar bulunduğu görülmektedir.