TUS 2024 II.Dönem Sonuçları

Branşlara göre MIN-MAX puanlar

Branş-spesific sonuçları görmek için Outputs sayfasına;
Merak edenler kodları görmek isterse de GitHub sayfasına gidebilirsiniz.



Veriler ÖSYM sayfasından .pdf dosyası olarak alınıp, R yazılımı ile düzenlenmiştir.


Veri seti ile ilgili farklı bir değerlendirme isterseniz Twitter üzerinden ya da iletişim formu ile ulaşabilirsiniz. Örn: Kurum spesific veriler.


Yabancı Uyruklu kontenjanları verilere dahil edilmemiştir.
Onlar için de ayrı bir figure hazırlanabilir.


Verilerde hata varsa muhtemel ÖSYM pdf dosyası ya da kod kaynaklıdır. Tek tek inceleme şansım olmuyor.

R Codes

Import libraries

library(tidyverse)
library(pdftools)
library(glue)
library(ggtext)


my_greens <- c("#13bf13", "#009900")
my_grays <- c("#C0C0C0", "#909090", "#696969")
my_reds <- c("#ff6666")
my_white <- c("#E8E8E8")
my_black <- c("#000000")

Clean dataset

kadro_tus_init <- kadro_tus %>%
  separate_rows(value, sep = "\n") %>%
  mutate(value = str_squish(value)) %>%
  filter(value != "") %>%
  mutate(value = str_remove_all(value, " dipnot \\d")) %>%
  filter(!str_detect(value, "Kontenjan|2024-TUS")) %>%
  extract(value, into = c("kurum", "b"), "(.*)/(.*)") %>%
  extract(b, into = c("brans", "tur", "d"), "(.*)(Yabancı Uyruklu|Genel)(.*)") %>%
  mutate(
    d = str_trim(d),
    brans = str_trim(brans)
  ) %>%
  separate(d, into = c("kontenjan", "yerlesen", "bos", "min", "max"), sep = " ") %>%
  separate(kurum, into = c("number", "kurum"), sep = "^\\d+\\s") %>%
  select(-number) %>%
  mutate(
    kurum = str_replace_all(kurum, "Sağlık Bilimleri Üniversitesi", "SBÜ"),
    kurum = str_replace_all(kurum, "Eğitim ve Araştırma Hastanesi", "EAH"),
    kurum = str_replace_all(kurum, "Tıp Fakültesi", "Tıp F."),
    kurum = str_remove_all(kurum, " \\(ANKARA\\)")
  ) %>%
  mutate(across(min:max, ~ if_else(. == "--", NA_character_, .))) %>%
  mutate(across(min:max, ~ str_replace_all(., ",", "."))) %>%
  mutate(across(kontenjan:max, ~ as.numeric(.))) %>%
  mutate(across(min:max, ~ round(., 2)))


clean_tus_2024 <- kadro_tus_init %>%
  mutate(
    min = if_else(is.na(min), 0, min),
    doluluk = 100 * round(yerlesen / kontenjan, 2),
    kurum_title = if_else(!str_detect(kurum, "SBÜ|EAH"), str_to_title(kurum), kurum),
    equal_kucuk_puan = if_else(min != max, min, NA_real_),
    kurum_title = str_remove_all(kurum_title, "Tayfur Ata Sökmen "),
    kurum_title = str_remove_all(kurum_title, "Prof. Dr. ")
  )

Define a function to plot for a specific BRANCH

func_tus <- function(my_branch) {
  clean_branch_2024 <- clean_tus_2024 %>%
    filter(brans != "ASKERİ SAĞLIK HİZMETLERİ") %>% # There is no position
    filter(brans != "HAVA VE UZAY HEKİMLİĞİ") %>% # There is no position
    filter(
      tur == "Genel",   # There are some errors in yabancı uyruklu-genel data in the dataset
      brans == {{ my_branch }}
    ) %>%
    group_by(kurum) %>% # because of the errors, I chose only higher number of position as "GENEL" and ignored the other
    arrange(desc(kontenjan)) %>%
    slice(1) %>%
    ungroup()

  minmax_branch <- clean_branch_2024 %>%
    filter(min != 0) %>%
    summarise(
      min = min(min, na.rm = TRUE),
      max = max(max, na.rm = TRUE)
    )

  doluluk_branch <- clean_branch_2024 %>%
    summarise(
      sum_kontenjan = sum(kontenjan, na.rm = TRUE),
      sum_yerlesen = sum(yerlesen, na.rm = TRUE)
    ) %>%
    mutate(doluluk = paste0("%", round(100 * sum_yerlesen / sum_kontenjan, 1)))

  lowest <- clean_branch_2024 %>%
    filter(min != 0) %>%
    arrange(min) %>%
    slice_head() %>%
    pull(kurum_title)

  highest <- clean_branch_2024 %>%
    filter(min != 0) %>%
    arrange(desc(max)) %>%
    slice_head() %>%
    pull(kurum_title)

  my_subtitle <- glue::glue("Doluluk: {doluluk_branch$doluluk} ({doluluk_branch$sum_yerlesen}/{doluluk_branch$sum_kontenjan})<br><br>
                          En yüksek: **{highest}** ({minmax_branch$max})<br><br>
                          En düşük: {lowest} ({minmax_branch$min})")


  

  branch_plot <- clean_branch_2024 %>%
    mutate(
      color = case_when(
        doluluk == 100 ~ my_greens[2],
        doluluk == 0 ~ my_reds[1],
        TRUE ~ my_grays[2]
      ),
      name = glue::glue("<i style='color:{color}'>{kurum_title}</i> ({yerlesen}\\/{kontenjan})"),
      name = fct_reorder(name, min)
    ) %>%
    ggplot(aes(x = min, y = name, fill = color)) +
    geom_segment(aes(x = min, xend = max, y = name, yend = name), color = my_grays[3]) +
    geom_point(aes(x = min, y = name), color = ifelse(clean_branch_2024$doluluk == 100, my_greens[1], my_grays[1]), size = 2.5) +
    geom_point(aes(x = max, y = name), color = ifelse(clean_branch_2024$doluluk == 100, my_greens[2], my_grays[2]), size = 3.5) +
    theme_light() +
    scale_x_continuous(limits = c(minmax_branch$min - 2, minmax_branch$max + 2), breaks = seq(45, 80, 5)) +
    geom_text(aes(x = max, y = name, label = max),
      hjust = -.5, size = 3,
      color = ifelse(clean_branch_2024$doluluk == 100, my_greens[2], my_grays[2])
    ) +
    geom_text(aes(x = equal_kucuk_puan, y = name, label = equal_kucuk_puan), hjust = 1.5, size = 2.5, color = ifelse(clean_branch_2024$doluluk == 100, my_greens[1], my_grays[2]), check_overlap = TRUE) +
    labs(
      title = glue:::glue("TUS 2024/II, <span style='color: #95568F;'>{my_branch}</span>"),
      subtitle = my_subtitle,
      x = "Puan",
      y = "",
      caption = "<i style='color:#009900'>Yeşil</i> : Kadrolar tam dolu<br><i style='color:#ff6666'>Kırmızı</i>: Kadrolar tam boş<br>kaynak: ÖSYM<br>by @AliGunerMD"
    ) +
    theme(
      panel.grid = element_line(color = my_white[1]),
      panel.grid.minor.x = element_blank(),
      panel.border = element_blank(),
      axis.text.y = element_markdown(),
      legend.position = "none",
      plot.caption = element_markdown(),
      plot.title.position = "plot",
      plot.title = element_markdown(hjust = .5, size = 14, face = "bold"),
      plot.subtitle = element_markdown(hjust = .5)
    )

  return(branch_plot)
  
}

use defined function for the BRANCH_NAMES vector

# branch_names <- unique(clean_tus_2024$brans)

branch_names <- clean_tus_2024 %>%
  filter(brans != "ASKERİ SAĞLIK HİZMETLERİ") %>%
  filter(brans != "HAVA VE UZAY HEKİMLİĞİ") %>%
  distinct(brans) %>%
  pull(brans)

save_ggplot_for_branch <- function(branch_name) {
  branch_plot <- func_tus(my_branch = branch_name)

  ggsave(branch_plot,
    file = file.path("Outputs_2024_2", paste0(branch_name, ".jpg")),
    dpi = 300,
    width = 9,
    height = 14
  )
}

purrr::walk(branch_names, save_ggplot_for_branch)
Ali GUNER
Ali GUNER
Professor of Surgery

An academic who engaged in the improvement of scientific methodology/products, and more importantly in the development of the people those who produce science.

Related