Hafta_2 Veri tanıma

Yazar

Enes Cetinkaya

Yayınlanma Tarihi

10 Kasım 2026

Veri Hazırlığı

Kod
library(here)
here() starts at C:/Users/enescetinkaya/Documents/OLC731
Kod
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.
Kod
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.
Kod
library(haven)
Kod
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

Görev 1 - Tip Envanteri

Kod
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.…

Cevap:

  • 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ı.

Görev 2 - Eşleştirme

 

Kod
class(ogrenci$cinsiyet)
[1] "character"
Kod
class(ogrenci$evde_kitap)
[1] "numeric"
Kod
class(ogrenci$mat_puan)
[1] "numeric"
Kod
class(ogrenci$sinif_duzeyi)
[1] "numeric"
Kod
class(ogrenci$devamsizlik_gun)
[1] "numeric"
Kod
class(ogrenci$okul_id)
[1] "character"

Cevap:

  • 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.

Görev 3 - Sıralı faktör

Kod
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 
Kod
sum(kitap_f >= "101-200", na.rm = TRUE)
[1] 4366

Cevap:4366

Görev 4 - Tuzağı görün

Kod
mat_f <- factor(ogrenci$mat_puan)
Kod
mat_num <- as.numeric(mat_f)
Kod
min(mat_num, na.rm = TRUE)
[1] 1
Kod
max(mat_num, na.rm = TRUE)
[1] 597
  • Çıkan değerlerin en büyük ve en küçüğü 1 ve 597.
Kod
min(ogrenci$mat_puan)
[1] 180
Kod
max(ogrenci$mat_puan)
[1] 820
  • Gerçek puanların en küçük ve en büyüğü 180 ve 820.

Cevap:

Sıralama değeri verdiği için çıkan değerler gerçek puanları yansıtmadı.

Görev 5 - Kendi sorunuz

Kod
pisa_ogrenci <- readRDS(here("veri", "PISA2025_TR_stu.rds"))
Kod
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"  
Kod
class(pisa_ogrenci$ST004D01T)
[1] "haven_labelled" "vctrs_vctr"     "double"        
Kod
cinsiyet_f <- as_factor(pisa_ogrenci$ST004D01T)
Kod
levels(cinsiyet_f)
[1] "Female" "Male"  
Kod
class(pisa_ogrenci$PV1MATH)
[1] "numeric"
Kod
mean(pisa_ogrenci$PV1MATH[cinsiyet_f == "Female"], na.rm = TRUE)
[1] 454.5855
Kod
mean(pisa_ogrenci$PV1MATH[cinsiyet_f == "Male"], na.rm = TRUE)
[1] 477.4855

Cevap:

  • Bu örneklemde erkek öğrencilerin matematik puan ortalaması 477.49, kız öğrencilerinki 454.59’dur. Erkekler lehine yaklaşık 22.9 puanlık bir fark görülmektedir. Bu sonuç ağırlıksız ve yalnızca ilk olası değer (PV1MATH) kullanılarak elde edilmiş betimsel bir karşılaştırmadır.