Veri setlerini files penceresinden tıklayarak da enviroment’a ekleyebiliriz. Bu işlemi load() komutu ile de yapabiliriz.

load("data/PISA_OGR_2018.rda") 
PISA_OGR_2018

Tüm PISA ve TIMSS verilerine erişebilmek için tuev paketini github üzerinden indirmeden de kullanabiliriz.

ctrl+shift+c ile tüm seçili satırlara # ekleyebiliriz.

# devtools::install_github("tuevpaket/tuev")
# library("tuev")
# data(PISA_COG_2018)
# data(PISA_SCH_2018)
# data(PISA_OGR_2018)

Midi pisa veri setini oluşturma

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
library(magrittr)
# load("data/PISA_OGR_2018.rda")
midiPISA <- PISA_OGR_2018 %>% 
  select(OGRENCIID,SINIF,CINSIYET,
         Anne_Egitim,Baba_Egitim,OKUMA_ZEVK,
         ST097Q01TA:ST097Q05TA,ODOKUMA1:ODOKUMA5)

Mini pisa veri setini oluşturma

miniPISA <- PISA_OGR_2018 %>% 
  select(SINIF, CINSIYET, KITAPSAYISI, SES, 
    Anne_Egitim,Baba_Egitim,OKUMA_ZEVK,OK_YETERLIK,
    Okuloncesi_yil, OKUL_TUR,ODOKUMA1)

Kendi veri setimizi oluşturup .rda uzantısıyla kaydedeceğiz.

df1 <- PISA_OGR_2018 %>% 
  select(OKUMA_BAGLILIGI, OKUMA_ZEVK, OK_ZORLUK) #değişkenleri seçiyoruz.
saveRDS(df1, "data/df_1.Rds") #rds olarak kaydediyoruz.

readRDS()` ile .rds dosyasını açıyoruz.

readRDS("data/df_1.Rds")
## # A tibble: 6,890 × 3
##    OKUMA_BAGLILIGI OKUMA_ZEVK OK_ZORLUK
##              <dbl>      <dbl>     <dbl>
##  1         -0.922     -0.289    -0.0697
##  2          1.07       0.604    -0.182 
##  3         -0.62       0.638     0.906 
##  4         -0.62      -1.15      1.24  
##  5          0.378      0.667    -0.0697
##  6         -0.62       0.357     1.24  
##  7          0.646     -0.0886   -0.0697
##  8         -0.0104     0.931    -0.0697
##  9         -0.234      1.22     -0.631 
## 10          0.759      0.425    -0.631 
## # ℹ 6,880 more rows

SPSS verilerini düzenleyebilmek için expss paketi gerekiyor. expssin drop_var_labs komutu ile SPSS’teki label’ları kaldırabiliriz. Labellar bazen R programında yapılan analizlerde sorun çıkartabiliyor.

library(tidyverse) # paketin aktifleştirilmesi
library(expss)
load("data/midiPISA.rda") # çalışılacak veri setinin R ortamına aktarılması
midiPISA<- expss::drop_var_labs(midiPISA) # değişken etiketlerinin atılması
load("data/miniPISA.rda") # çalışılacak veri setinin R ortamına aktarılması
miniPISA<- expss::drop_var_labs(miniPISA) # değişken etiketlerinin atılması

SPSS verilerini düzenledikten -yani labelları kaldırdıktan sonra- mini ve midileri okutuyoruz. head () ile ilk 6 satırına bakıyoruz.

# çalışılacak veri setinin data adlı klasörden R ortamına aktarılması
#load("data/midiPISA.rda") 
head(midiPISA) 
## # A tibble: 6 × 16
##   OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##       <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
## 1  79200768    10        2           2           2     -0.289          1
## 2  79201064    10        2           2           2      0.604          3
## 3  79201118    10        1           1           2      0.638          2
## 4  79201275     9        2           6           6     -1.15           2
## 5  79201481     9        2           4           4      0.667          3
## 6  79201556    10        2           4           6      0.357          3
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
# çalışılacak veri setinin data adlı klasörden R ortamına aktarılması
#load("data/miniPISA.rda") 
head(midiPISA) 
## # A tibble: 6 × 16
##   OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##       <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
## 1  79200768    10        2           2           2     -0.289          1
## 2  79201064    10        2           2           2      0.604          3
## 3  79201118    10        1           1           2      0.638          2
## 4  79201275     9        2           6           6     -1.15           2
## 5  79201481     9        2           4           4      0.667          3
## 6  79201556    10        2           4           6      0.357          3
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>

Label kalktığında haven labelled yazmamalı. Tabloda sütun adı altında ki label’lar kaldırıldı ancak alternatif olarak şöyle bir kod da kullanılabilir:

# library(sjlabelled)
# midiPISA <- midiPISA %>% mutate_if(is_labelled, as_factor)
# # Faktor degiskenlere duzey atama amacıyla yazılan fonksiyon
# levelsnames <- function(x){
#   levels(x) <- names(attr(x,"labels"))
#   x
# }
# # Yazılan fonkisyonun faktor degiskenlere uygulanması
# midiPISA <-mutate_if(midiPISA,is.factor, levelsnames)

pipe operatörü ” %>% ” ara nesneleri kaydetme gerekliliğini kaldırdığından hafıza sorunlarını elimine ediyor.

filter() ile 9. sınıfları seçebiliriz.

Not: Daha sonra çalışacaksak nesne olarak kaydetmeyi unutma

#library(dplyr) # paketin aktifleştirilmesi
library(magrittr) # paketin aktifleştirilmesi (pipe operatörü için)
midiPISA %>%
 filter (SINIF== 9) %>% #sadece 9. sınıf öğrencilerinin seçilmesi
  head(5) # ilk beş satırın görüntülenmesi
## # A tibble: 5 × 16
##   OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##       <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
## 1  79201275     9        2           6           6     -1.15           2
## 2  79201481     9        2           4           4      0.667          3
## 3  79202354     9        2           4           4     -1.13           1
## 4  79202395     9        2           2           4      1.01           4
## 5  79203125     9        1           5           5      1.38           3
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>

filter() fonksiyonunda mantıksal ifadeler kullanılıyor (=, !, <=, >= gibi).

kiz <- filter(midiPISA, CINSIYET ==1)
erkek <- filter(midiPISA, CINSIYET ==2)

Cinsiyete göre frekans tablosu oluşturma

table(midiPISA$CINSIYET)
## 
##    1    2 
## 3396 3494

filter() komutu kullanımı

midiPISA %>% 
  filter(Anne_Egitim==6 & Baba_Egitim== 6) # & ve
## # A tibble: 636 × 16
##    OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##        <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
##  1  79201275     9        2           6           6    -1.15            2
##  2  79202343    11        2           6           6    -0.112           1
##  3  79201796    10        2           6           6     0.842           4
##  4  79202928    10        2           6           6    -0.112           4
##  5  79200826    10        1           6           6     2.61            3
##  6  79201124    10        2           6           6    -2.71            1
##  7  79201604    10        2           6           6    -1.15            3
##  8  79201805    10        2           6           6     1.08            3
##  9  79202821    10        2           6           6     0.538           2
## 10  79203623    10        2           6           6     0.0127          3
## # ℹ 626 more rows
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
midiPISA %>% 
  filter(Anne_Egitim==6 | Baba_Egitim== 6) # | veya
## # A tibble: 1,569 × 16
##    OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##        <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
##  1  79201275     9        2           6           6     -1.15           2
##  2  79201556    10        2           4           6      0.357          3
##  3  79202343    11        2           6           6     -0.112          1
##  4  79203553    10        1           6           5      1.19           4
##  5  79203843    10        2           5           6      0.780          4
##  6  79204714    10        2           6           4      0.338          3
##  7  79200971    10        2           6           5     -0.167          3
##  8  79201796    10        2           6           6      0.842          4
##  9  79202442    11        2           1           6      2.61           4
## 10  79202928    10        2           6           6     -0.112          4
## # ℹ 1,559 more rows
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
midiPISA %>% 
  filter(!(Anne_Egitim==0 & Baba_Egitim==0)) # ! eşit değildir
## # A tibble: 6,721 × 16
##    OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##        <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
##  1  79200768    10        2           2           2    -0.289           1
##  2  79201064    10        2           2           2     0.604           3
##  3  79201118    10        1           1           2     0.638           2
##  4  79201275     9        2           6           6    -1.15            2
##  5  79201481     9        2           4           4     0.667           3
##  6  79201556    10        2           4           6     0.357           3
##  7  79201652    10        1           5           5    -0.0886          3
##  8  79202033    10        2           5           5     0.931           3
##  9  79202179    10        1           1           4     1.22            3
## 10  79202278    10        2           0           2     0.425           3
## # ℹ 6,711 more rows
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
midiPISA %>% filter(SINIF== 12) #12.sınıf olanlar
## # A tibble: 6 × 16
##   OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##       <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
## 1  79203092    12        1           0           1      2.61           3
## 2  79204140    12        2           0           1     -0.279          3
## 3  79200174    12        1           5           5     NA             NA
## 4  79206519    12        1           0           0     -0.549          3
## 5  79205173    12        1           5           5      2.61           1
## 6  79201478    12        1           0           1      0.357         NA
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
midiPISA %>% filter(!(SINIF== 12)) #12.sınıf olmayanlar
## # A tibble: 6,884 × 16
##    OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##        <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
##  1  79200768    10        2           2           2    -0.289           1
##  2  79201064    10        2           2           2     0.604           3
##  3  79201118    10        1           1           2     0.638           2
##  4  79201275     9        2           6           6    -1.15            2
##  5  79201481     9        2           4           4     0.667           3
##  6  79201556    10        2           4           6     0.357           3
##  7  79201652    10        1           5           5    -0.0886          3
##  8  79202033    10        2           5           5     0.931           3
##  9  79202179    10        1           1           4     1.22            3
## 10  79202278    10        2           0           2     0.425           3
## # ℹ 6,874 more rows
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>

select() komutu kullanımı

midiPISA %>%  select(OGRENCIID: ST097Q04TA, -CINSIYET) # sütun bazında değişken ekleme ve çıkarma
## # A tibble: 6,890 × 9
##    OGRENCIID SINIF Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA ST097Q02TA
##        <dbl> <dbl>       <dbl>       <dbl>      <dbl>      <dbl>      <dbl>
##  1  79200768    10           2           2    -0.289           1          2
##  2  79201064    10           2           2     0.604           3          2
##  3  79201118    10           1           2     0.638           2          3
##  4  79201275     9           6           6    -1.15            2          2
##  5  79201481     9           4           4     0.667           3          3
##  6  79201556    10           4           6     0.357           3          3
##  7  79201652    10           5           5    -0.0886          3         NA
##  8  79202033    10           5           5     0.931           3          3
##  9  79202179    10           1           4     1.22            3          4
## 10  79202278    10           0           2     0.425           3          4
## # ℹ 6,880 more rows
## # ℹ 2 more variables: ST097Q03TA <dbl>, ST097Q04TA <dbl>

select() komutunun alt komutları

starts_with, ends_with ve contains

midiPISA %>%  select(starts_with("ST097"))
## # A tibble: 6,890 × 5
##    ST097Q01TA ST097Q02TA ST097Q03TA ST097Q04TA ST097Q05TA
##         <dbl>      <dbl>      <dbl>      <dbl>      <dbl>
##  1          1          2          1          1          1
##  2          3          2          3          3          3
##  3          2          3          3          3          3
##  4          2          2          3          1          1
##  5          3          3          4          3          1
##  6          3          3          2          2          3
##  7          3         NA          3          3          4
##  8          3          3          2          1          2
##  9          3          4          3          4          3
## 10          3          4          2          1          1
## # ℹ 6,880 more rows
midiPISA %>%  select(ends_with("TA"))
## # A tibble: 6,890 × 5
##    ST097Q01TA ST097Q02TA ST097Q03TA ST097Q04TA ST097Q05TA
##         <dbl>      <dbl>      <dbl>      <dbl>      <dbl>
##  1          1          2          1          1          1
##  2          3          2          3          3          3
##  3          2          3          3          3          3
##  4          2          2          3          1          1
##  5          3          3          4          3          1
##  6          3          3          2          2          3
##  7          3         NA          3          3          4
##  8          3          3          2          1          2
##  9          3          4          3          4          3
## 10          3          4          2          1          1
## # ℹ 6,880 more rows
midiPISA %>%  select(contains("TA"))
## # A tibble: 6,890 × 5
##    ST097Q01TA ST097Q02TA ST097Q03TA ST097Q04TA ST097Q05TA
##         <dbl>      <dbl>      <dbl>      <dbl>      <dbl>
##  1          1          2          1          1          1
##  2          3          2          3          3          3
##  3          2          3          3          3          3
##  4          2          2          3          1          1
##  5          3          3          4          3          1
##  6          3          3          2          2          3
##  7          3         NA          3          3          4
##  8          3          3          2          1          2
##  9          3          4          3          4          3
## 10          3          4          2          1          1
## # ℹ 6,880 more rows

NOT: %>% kullanmadan komut kullanmak için mutlaka midiPISA gibi veri setini select ya da kullanılan komut içine eklememiz gerekiyor.

select(midiPISA, contains("OD"))
## # A tibble: 6,890 × 5
##    ODOKUMA1 ODOKUMA2 ODOKUMA3 ODOKUMA4 ODOKUMA5
##       <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
##  1     376.     418.     421.     414.     434.
##  2     512.     473.     564.     485.     500.
##  3     396.     414.     423.     452.     392.
##  4     393.     429.     365.     383.     379.
##  5     552.     570.     563.     531.     532.
##  6     441.     416.     407.     437.     473.
##  7     411.     422.     426.     385.     461.
##  8     551.     552.     509.     491.     538.
##  9     542.     534.     501.     523.     497.
## 10     434.     470.     538.     495.     502.
## # ℹ 6,880 more rows

arrange() komutu ve alt komutları
bu komutun varsayılanı küçükten büyüğe doğrudur. Tam tersi sıralama için desc() ya da eksi kullanmak gerekiyor.

midiPISA %>% arrange(ODOKUMA1)
## # A tibble: 6,890 × 16
##    OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##        <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
##  1  79202924     9        2           6           6    NA               3
##  2  79203329     9        2           2           2     0.0127          1
##  3  79203445    10        2           6           1    -0.0738          1
##  4  79202889     9        2           1           2    -0.412           3
##  5  79201966    10        2           6           6    -0.116           3
##  6  79203650     9        2           0           5    NA               1
##  7  79206885     9        2           6           6     0.168           1
##  8  79204940    10        2           5           1     0.264           3
##  9  79201770     9        2           1           1    -0.122           3
## 10  79201089     9        2           0           0     0.137           3
## # ℹ 6,880 more rows
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
midiPISA %>% arrange(-ODOKUMA1) #yerine desc() de olur
## # A tibble: 6,890 × 16
##    OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##        <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
##  1  79202969    10        1           6           6      2.08           3
##  2  79200826    10        1           6           6      2.61           3
##  3  79200072    10        2           4           4      1.60           4
##  4  79200887     9        1           6           6      2.08           3
##  5  79207038     9        2           6           6      2.61           3
##  6  79202197    10        1           6           6      0.638          3
##  7  79201373    10        1           6           6      1.33           4
##  8  79203639    10        1           3           6      0.674          2
##  9  79201125    10        2           5           5      0.370          4
## 10  79200920    10        2           5           6      0.201          4
## # ℹ 6,880 more rows
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
arrange(midiPISA, desc(OKUMA_ZEVK)) # pipesız kullanım
## # A tibble: 6,890 × 16
##    OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
##        <dbl> <dbl>    <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
##  1  79206987    10        1           5           4       2.66          3
##  2  79204432    10        1           2           1       2.66          3
##  3  79206337    10        1           3           4       2.66          4
##  4  79203300     9        1           4           4       2.61          3
##  5  79205358     9        1           1           1       2.61          4
##  6  79202442    11        2           1           6       2.61          4
##  7  79203549    10        1           5           4       2.61          3
##  8  79203943    10        2           1           1       2.61          3
##  9  79204576    10        1           1           2       2.61          3
## 10  79200826    10        1           6           6       2.61          3
## # ℹ 6,880 more rows
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>

rename() komutu

midiPISA %>% 
  select(ODOKUMA1,ODOKUMA2)%>% 
  rename(okumapuan1= ODOKUMA1, okumapuan2= ODOKUMA2)
## # A tibble: 6,890 × 2
##    okumapuan1 okumapuan2
##         <dbl>      <dbl>
##  1       376.       418.
##  2       512.       473.
##  3       396.       414.
##  4       393.       429.
##  5       552.       570.
##  6       441.       416.
##  7       411.       422.
##  8       551.       552.
##  9       542.       534.
## 10       434.       470.
## # ℹ 6,880 more rows

rename() için alternatif kullanım:

midiPISA %>%   
select(OGRENCIID,ST097Q02TA,ST097Q03TA, okumapuan1=ODOKUMA1) %>%  
head(3) 
## # A tibble: 3 × 4
##   OGRENCIID ST097Q02TA ST097Q03TA okumapuan1
##       <dbl>      <dbl>      <dbl>      <dbl>
## 1  79200768          2          1       376.
## 2  79201064          2          3       512.
## 3  79201118          3          3       396.

mutate() yeni değişken eklemek için kullanılıyor.

#mutate(veri_seti, yeni_değişken = değişken1 + değişken2)

Okuma zevki ile ilgili maddeleri seçip toplam puan elde etme ve yeni değişken olarak ekleme

zevk<- select(midiPISA, starts_with("ST097"))
zevk%>% 
mutate(toplam= ST097Q01TA+ST097Q02TA+ST097Q03TA+ST097Q04TA+ST097Q05TA) %>% 
 head(3) 
## # A tibble: 3 × 6
##   ST097Q01TA ST097Q02TA ST097Q03TA ST097Q04TA ST097Q05TA toplam
##        <dbl>      <dbl>      <dbl>      <dbl>      <dbl>  <dbl>
## 1          1          2          1          1          1      6
## 2          3          2          3          3          3     14
## 3          2          3          3          3          3     14

satır bazında toplamak için rowSums()

across() yerine starts_with() de olur.

zevk %>% 
mutate(toplam=rowSums(across(ST097Q01TA:ST097Q05TA))) %>%  #across ..dan ..a kadar
head(3)
## # A tibble: 3 × 6
##   ST097Q01TA ST097Q02TA ST097Q03TA ST097Q04TA ST097Q05TA toplam
##        <dbl>      <dbl>      <dbl>      <dbl>      <dbl>  <dbl>
## 1          1          2          1          1          1      6
## 2          3          2          3          3          3     14
## 3          2          3          3          3          3     14

Değişkeni istediğimiz yere eklemek için mutate() içinde .before ya da .after kullanılır.

zevk %>% 
mutate(toplam=rowSums(across(ST097Q01TA:ST097Q05TA)),
       .before= ST097Q01TA)%>%
  head(3) 
## # A tibble: 3 × 6
##   toplam ST097Q01TA ST097Q02TA ST097Q03TA ST097Q04TA ST097Q05TA
##    <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>
## 1      6          1          2          1          1          1
## 2     14          3          2          3          3          3
## 3     14          2          3          3          3          3

Mutate() ile birden fazla değişken oluşturulabilir. pipe operatörü ile bağlaya bağlaya da olabilir

#mutate(veri_seti, yeni_değişken1 = değişken1 + değişken2, yeni_değişken2 = değişken3 * değişken4)

transmute() ile oluşturduğumuz yeni değişken dışında eski değişkenler işlemde kullanılan değişkenler veri setinden çıkarılır

zevk %>% 
transmute(toplam=rowSums(across(ST097Q01TA:ST097Q05TA))) %>% 
head(2) 
## # A tibble: 2 × 1
##   toplam
##    <dbl>
## 1      6
## 2     14

ifelse() kullanımı
önce sınanacak nesne eklenir

#ifelse(test = x<0, evet = ilkdeger , hayır = ikincideger)

örnek

x <- c(-2,1,-1,-3,3)
ifelse(x<0,"Negatif", "Pozitif")
## [1] "Negatif" "Pozitif" "Negatif" "Negatif" "Pozitif"
Okultur <- midiPISA %>%
  select(1:5) %>%  #ilk beş değişkenin seçimi
  mutate(okul = ifelse(SINIF == 7 | SINIF == 8,
                       "Ortaokul", "Lise")) %>%  # okul değişkeninin veri setine eklenmesi 
                                                  #7 ya da 8 ise ortaokul de kalanlarına lise de anlamına geliyor.
 arrange(SINIF) # veri setinin SINIF değişkenine göre sıralanması

tail(Okultur)
## # A tibble: 6 × 6
##   OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim okul 
##       <dbl> <dbl>    <dbl>       <dbl>       <dbl> <chr>
## 1  79203092    12        1           0           1 Lise 
## 2  79204140    12        2           0           1 Lise 
## 3  79200174    12        1           5           5 Lise 
## 4  79206519    12        1           0           0 Lise 
## 5  79205173    12        1           5           5 Lise 
## 6  79201478    12        1           0           1 Lise

case_when() fonksiyonu çoklu ifelse() kullanımı ile benziyor.
case_when() birden fazla koşula dayalı karşılaştırmalarda yeni bir değişken oluşturmak amacıyla kullanılır.

v1 <- midiPISA %>%
  mutate(ODOKUMA1_kategorik = #yeni değişkeni adlandır önce
    case_when(        #önce koşulu yaz sonra tilda ile kategori adı yaz
      ODOKUMA1 <=  402.6  ~ "dusuk",
      ODOKUMA1 > 402.6  & ODOKUMA1 <  525.7 ~ "orta",
      ODOKUMA1 >=525.7 ~ "yuksek" )) %>%
      select(ODOKUMA1,ODOKUMA1_kategorik) #sürekli halini ve kategorik halini görmek için
  head(v1)
## # A tibble: 6 × 2
##   ODOKUMA1 ODOKUMA1_kategorik
##      <dbl> <chr>             
## 1     376. dusuk             
## 2     512. orta              
## 3     396. dusuk             
## 4     393. dusuk             
## 5     552. yuksek            
## 6     441. orta

ifelse() ile aynı işlemi yapalım

 v1 <- midiPISA %>%
  mutate(ODOKUMA1_kategorik =
    if_else(ODOKUMA1 <= 402.6, "dusuk",
      if_else(ODOKUMA1 < 525.7, "orta", "yuksek")
    )
  ) %>%
  select(ODOKUMA1, ODOKUMA1_kategorik)
head(v1)                          
## # A tibble: 6 × 2
##   ODOKUMA1 ODOKUMA1_kategorik
##      <dbl> <chr>             
## 1     376. dusuk             
## 2     512. orta              
## 3     396. dusuk             
## 4     393. dusuk             
## 5     552. yuksek            
## 6     441. orta

Oluşturulan yeni ODOKUMA1 kategorik degişkeninindeki düzeylerin veri setinde nasıl dağıldığını inceleyelim. kableextra paket ile tablo kuralım.

v1 %>% 
  group_by(ODOKUMA1_kategorik) %>% 
  summarize(ort= mean(ODOKUMA1), sd= sd(ODOKUMA1)) %>% 
  kable(digits=2,col.names= c("kategori", "ort", "sd"))

count() fonksiyonu

v1 %>% count(ODOKUMA1_kategorik)
## # A tibble: 3 × 2
##   ODOKUMA1_kategorik     n
##   <chr>              <int>
## 1 dusuk               1724
## 2 orta                3443
## 3 yuksek              1723

uzun kullanımı da mevcut

v1 %>% group_by(ODOKUMA1_kategorik) %>%  summarize(n=n())
## # A tibble: 3 × 2
##   ODOKUMA1_kategorik     n
##   <chr>              <int>
## 1 dusuk               1724
## 2 orta                3443
## 3 yuksek              1723
midiPISA %>% count(SINIF) %>%  arrange(-n) # ya da
## # A tibble: 6 × 2
##   SINIF     n
##   <dbl> <int>
## 1    10  5360
## 2     9  1295
## 3    11   207
## 4     8    19
## 5    12     6
## 6     7     3
midiPISA %>% count(SINIF, sort=TRUE)
## # A tibble: 6 × 2
##   SINIF     n
##   <dbl> <int>
## 1    10  5360
## 2     9  1295
## 3    11   207
## 4     8    19
## 5    12     6
## 6     7     3