Kod
library(here)here() starts at C:/Users/enescetinkaya/Documents/OLC731
library(here)here() starts at C:/Users/enescetinkaya/Documents/OLC731
library(readr)
ogrenci <- read_csv(here("veri", "OKUL2026_ogrenci.csv"))Rows: 18014 Columns: 77
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (6): ogrenci_id, okul_id, cinsiyet, ekran_suresi, ozel_ders, kayit_tarihi
dbl (71): sinif_duzeyi, anne_egitim, baba_egitim, evde_kitap, sosyoekonomik_...
ℹ 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.
okul <- read_csv(here("veri", "OKUL2026_okul.csv"))Rows: 420 Columns: 7
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (4): okul_id, bolge, yerlesim, okul_turu
dbl (3): okul_buyuklugu, ogretmen_ogrenci_orani, okul_ort_sei
ℹ 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.
library(haven)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
glimpse(ogrenci)Rows: 18,014
Columns: 77
$ ogrenci_id <chr> "OG09682", "OG14904", "OG11763", "OG00085", "OG08…
$ okul_id <chr> "OK275", "OK245", "OK394", "OK155", "OK292", "OK0…
$ sinif_duzeyi <dbl> 6, 7, 7, 8, 6, 6, 8, 6, 7, 6, 6, 8, 8, 7, 8, 6, 8…
$ cinsiyet <chr> "Kız", "Erkek", "Kız", "K", "Kız", "Kız", "Kız", …
$ anne_egitim <dbl> 5, 2, 3, 4, 4, 2, 5, 3, 4, 999, 4, 2, 4, 3, 2, 4,…
$ baba_egitim <dbl> 2, 3, 4, 6, 6, 4, 6, 3, 5, 2, 3, 4, 2, 1, 3, 5, 2…
$ evde_kitap <dbl> 3, 2, 3, 5, 2, 3, 5, 3, 3, 1, 3, 2, 3, 1, 2, 2, 3…
$ sosyoekonomik_indeks <dbl> 0.10, -0.85, 0.30, 1.76, 0.40, -0.13, 1.99, 0.00,…
$ calisma_saati <dbl> 7.8, 0.9, 7.4, 16.5, 7.2, 12.9, 13.6, 5.8, 10.9, …
$ kurs_saati <dbl> 19.6, 15.3, 24.0, 28.4, 12.9, 20.3, 28.4, 23.6, 1…
$ devamsizlik_gun <dbl> 3, 20, 4, 5, 4, 8, 5, 7, 7, 3, 7, 21, 4, 7, 7, 6,…
$ ekran_suresi <chr> "2.0", "4.8", "3.8", "3.1", "8.8", "1.1", "2,4", …
$ ozel_ders <chr> "Hayır", "Hayır", "Hayır", "Evet", "Hayır", "Hayı…
$ mat_puan <dbl> 526, 345, 611, 672, 482, 485, 635, 412, 426, 537,…
$ turkce_puan <dbl> 568, 315, 653, 629, 484, 494, 633, 482, 604, 547,…
$ fen_puan <dbl> 600, 464, 537, 730, 540, 489, 604, 475, 609, 509,…
$ donem1 <dbl> 64, 50, 82, 92, 59, 56, 91, 41, 62, 65, 67, 71, 7…
$ donem2 <dbl> 74, 55, 80, 87, 64, 60, 90, 61, 72, 73, 73, 77, 7…
$ donem3 <dbl> 70, 63, 73, 84, 53, 68, 81, 57, 64, 66, 72, 53, 5…
$ m01 <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ m02 <dbl> 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0…
$ m03 <dbl> 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0…
$ m04 <dbl> 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0…
$ m05 <dbl> 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0…
$ m06 <dbl> 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1…
$ m07 <dbl> 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0…
$ m08 <dbl> 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0…
$ m09 <dbl> 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0…
$ m10 <dbl> 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1…
$ m11 <dbl> 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0…
$ m12 <dbl> 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0…
$ m13 <dbl> 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0…
$ m14 <dbl> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0…
$ m15 <dbl> 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0…
$ m16 <dbl> 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0…
$ m17 <dbl> 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1…
$ m18 <dbl> 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0…
$ m19 <dbl> 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, NA, 0, 0, NA, 0, 0,…
$ m20 <dbl> 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ m21 <dbl> 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ m22 <dbl> 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
$ m23 <dbl> 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1…
$ m24 <dbl> 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0…
$ m25 <dbl> 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ oz1 <dbl> 4, 3, 3, 5, 2, 5, 5, 2, 1, 2, 3, 3, 2, 2, 4, 2, 3…
$ oz2 <dbl> 2, 2, 4, 5, 3, 5, 5, 1, 2, 2, 4, 5, 4, 2, 4, 5, 3…
$ oz3 <dbl> 2, 3, 2, 5, 2, 5, 4, 1, 2, 4, 4, 3, 3, 2, 3, 4, 2…
$ oz4 <dbl> 3, 2, 5, 5, 3, 4, 4, 2, 4, 3, 4, 4, 4, 4, 3, 4, 1…
$ oz5 <dbl> 3, 2, 5, 5, 2, 5, 5, 2, 1, 3, 3, 2, 5, 2, 3, 4, 2…
$ oz6 <dbl> 1, 3, 3, 5, 3, 3, 5, 3, 1, 3, 4, 2, 3, 3, 5, 5, 2…
$ oz7 <dbl> 2, 2, 3, 5, 2, 3, 5, 2, 1, 5, 5, 4, 2, 3, 5, 3, 2…
$ oz8 <dbl> 2, 2, 3, 4, 3, 4, 2, 2, 1, 4, 3, 2, 3, 3, 4, 4, 3…
$ kay1 <dbl> 2, 1, 2, 2, 2, 4, 2, 4, 1, 3, 1, 3, 3, 4, 3, 3, 2…
$ kay2 <dbl> 1, 4, 4, 3, 2, 4, 3, 3, 3, 5, 5, 1, 2, 1, 3, 3, 3…
$ kay3 <dbl> 4, 5, 3, 2, 4, 5, 4, 5, 3, 2, 1, 3, 3, 4, 3, 2, 4…
$ kay4 <dbl> 4, 2, 2, 5, 3, 1, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 2…
$ kay5 <dbl> 3, 3, 5, 1, 4, 3, 4, 4, 2, 2, 1, 3, 5, 2, 4, 2, 2…
$ kay6 <dbl> 3, 5, 2, 4, 4, 1, 2, 3, 3, 5, 5, 4, 2, 4, 3, 3, 3…
$ aid1 <dbl> 5, 1, 1, 3, 4, 2, 1, 4, 3, 3, 3, 3, 2, 2, 3, 3, 2…
$ aid2 <dbl> 4, 1, 3, 4, 5, 3, 1, 5, 5, 2, 4, 3, 3, 4, 4, 3, 2…
$ aid3 <dbl> 2, 4, 5, 3, 2, 2, 4, 1, 3, 3, 4, 3, 4, 5, 1, 3, 4…
$ aid4 <dbl> 1, 2, 2, 3, 3, 2, 1, 4, 3, 4, 3, 4, 1, 4, 4, 1, 2…
$ aid5 <dbl> 2, 2, 3, 1, 3, 3, 1, 5, 4, 1, 1, 3, 2, 2, 5, 2, 2…
$ dst1 <dbl> 3, 4, 2, 1, 5, 4, 3, 4, 3, 3, 1, 3, 1, 5, 3, 1, 2…
$ dst2 <dbl> 3, 4, 1, 1, 3, 4, 3, 3, 2, 5, 4, 3, 1, 4, 4, 1, 2…
$ dst3 <dbl> 3, 4, 2, 2, 1, 5, 2, 2, 3, 2, 3, 4, 1, 2, 4, 1, 4…
$ dst4 <dbl> NA, 3, 1, 2, 3, 4, 2, 3, 4, 2, 4, 4, 1, 5, 3, 2, …
$ dst5 <dbl> 3, 3, 2, 2, 2, 4, 2, 1, 2, 4, 2, 4, 2, 5, 2, 2, 1…
$ oz1_t2 <dbl> 2, 2, 3, 5, 4, 4, 5, 2, 3, 5, 4, 2, 2, 4, 4, 3, 2…
$ oz2_t2 <dbl> 4, 1, 3, 5, 3, 3, 5, 1, 4, 4, 3, 2, 3, 3, 4, 5, 1…
$ oz3_t2 <dbl> 4, 3, 2, 5, 4, 4, 4, 2, 1, 4, 3, 3, 2, 3, 5, 5, 2…
$ oz4_t2 <dbl> 4, 3, 3, 5, 3, 1, 4, 2, 3, 5, 1, 5, 2, 3, 5, 5, 1…
$ oz5_t2 <dbl> 2, 2, 3, 5, 2, 3, 3, 5, 2, 5, 3, 3, 2, 3, 4, 4, 1…
$ oz6_t2 <dbl> 1, 2, 4, 5, 4, 3, 5, 3, 2, 5, 4, 3, 2, 2, 4, 4, 2…
$ oz7_t2 <dbl> 3, 2, 3, 5, 2, 3, 5, 4, 3, 4, 4, 3, 5, 3, 5, 5, 3…
$ oz8_t2 <dbl> 1, 3, 3, 5, 1, 4, 5, 2, 3, 5, 5, 3, 1, 4, 4, 4, 3…
$ kayit_tarihi <chr> "2026-10-09", "06.10.2026", "20.09.2026", "21.09.…
ogrenci_id, okul_id, cinsiyet, ekran_suresi, ozel_ders, kayit_tarihi olmak üzere 6 sütun metin olarak görünüyor.
ekran_suresi sütununun int ya da dbl gelmesini bekliyordum.
Veri setini incelediğimde 5 sütunun metin kalan 72 sütunun sayı geleceğini tahmin etmiştim. ekran_suresi sütunu beni yanılttı.
class(ogrenci$cinsiyet)[1] "character"
class(ogrenci$evde_kitap)[1] "numeric"
class(ogrenci$mat_puan)[1] "numeric"
class(ogrenci$sinif_duzeyi)[1] "numeric"
class(ogrenci$devamsizlik_gun)[1] "numeric"
class(ogrenci$okul_id)[1] "character"
cinsiyet değişkeni “character” görünüyor fakat sınıflama düzeyinde olduğu için “factor”olmalı.
evde_kitap değişkeni “numeric” olarak görünüyor fakat sıralama düzeyinde olduğundan factor(ordered = TRUE) olmalı.
mat_puan değişkeni “numeric” olarak görünüyor doğru.
sinif_duzeyi değişkeni “numeric” olarak görünüyor sınıflama düzeyinde olduğundan “factor” olmalı.
devamsizlik_gun değişkeni “numeric” olarak görünüyor doğru.
okul_id değişkeni “character” olarak görünüyor doğru.
kitap <- ogrenci$evde_kitap
etiketler <- c("0-10", "11-25", "26-100", "101-200", "201+")
kitap[kitap == 999] <- NA
kitap_f <- factor(kitap,
levels = 1:5,
labels = etiketler,
ordered = TRUE)
table(kitap_f, useNA = "ifany")kitap_f
0-10 11-25 26-100 101-200 201+
3224 5191 5233 3056 1310
sum(kitap_f >= "101-200", na.rm = TRUE)[1] 4366
mat_f <- factor(ogrenci$mat_puan)mat_num <- as.numeric(mat_f)min(mat_num, na.rm = TRUE)[1] 1
max(mat_num, na.rm = TRUE)[1] 597
min(ogrenci$mat_puan)[1] 180
max(ogrenci$mat_puan)[1] 820
Sıralama değeri verdiği için çıkan değerler gerçek puanları yansıtmadı.
pisa_ogrenci <- readRDS(here("veri", "PISA2025_TR_stu.rds"))names(pisa_ogrenci) [1] "CNTSCHID" "CNTSTUID" "W_FSTUWT" "PROGN" "ST004D01T"
[6] "ST001D01T" "AGE" "IMMIG" "ST022Q01TA" "ESCS"
[11] "HISCED" "ST255Q01JA" "REPEAT" "SKIPPING" "EXPECEDU"
[16] "ST034Q01TA" "ST034Q02TA" "ST034Q03TA" "ST034Q04TA" "ST034Q05TA"
[21] "ST034Q06TA" "BELONG" "BULLIED" "TEACHSUP" "JOYSCIE"
[26] "EFFSCIE" "CURIO" "PERSEV" "AIUSESCH" "ST438Q01DA"
[31] "EFFORT1" "PV1MATH" "PV2MATH" "PV3MATH" "PV4MATH"
[36] "PV5MATH" "PV6MATH" "PV7MATH" "PV8MATH" "PV9MATH"
[41] "PV10MATH" "PV1READ" "PV2READ" "PV3READ" "PV4READ"
[46] "PV5READ" "PV6READ" "PV7READ" "PV8READ" "PV9READ"
[51] "PV10READ" "PV1SCIE" "PV2SCIE" "PV3SCIE" "PV4SCIE"
[56] "PV5SCIE" "PV6SCIE" "PV7SCIE" "PV8SCIE" "PV9SCIE"
[61] "PV10SCIE"
class(pisa_ogrenci$ST004D01T)[1] "haven_labelled" "vctrs_vctr" "double"
cinsiyet_f <- as_factor(pisa_ogrenci$ST004D01T)levels(cinsiyet_f)[1] "Female" "Male"
class(pisa_ogrenci$PV1MATH)[1] "numeric"
mean(pisa_ogrenci$PV1MATH[cinsiyet_f == "Female"], na.rm = TRUE)[1] 454.5855
mean(pisa_ogrenci$PV1MATH[cinsiyet_f == "Male"], na.rm = TRUE)[1] 477.4855