load("C:/R/Rders/import/PISA_COG_2018.rda")
load("C:/R/Rders/import/PISA_OGR_2018.rda")
load("C:/R/Rders/import/PISA_SCH_2018.rda")
PISA_OGR_2018

Paketleri indirmeden github üzerinden kullanmak için şunları yapıyoruz:

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

Pipe operatörü çalışmazsa mutlaka magrittr paketini aktifleştirmek gerekebilir.Burada midi PISA seti oluşturduk.

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("C:/R/Rders/import/PISA_OGR_2018.rda")
midiPISA <- PISA_OGR_2018 %>% 
  select(OGRENCIID,SINIF,CINSIYET,
         Anne_Egitim,Baba_Egitim,OKUMA_ZEVK,
         ST097Q01TA:ST097Q05TA,ODOKUMA1:ODOKUMA5)

Mini PISA seti oluşturduk. Paketleri daha önce aktif olduğu için bir daha aktif hale getirmedik.

miniPISA <- PISA_OGR_2018 %>% 
  select(SINIF, CINSIYET, KITAPSAYISI, SES, 
    Anne_Egitim,Baba_Egitim,OKUMA_ZEVK,OK_YETERLIK,
    Okuloncesi_yil, OKUL_TUR,ODOKUMA1)
df_1 <- PISA_OGR_2018 %>% 
  select(OKUMA_BAGLILIGI, OKUMA_ZEVK, OK_ZORLUK)
# saveRDS(df_1, "import/df_1.Rds")
df_1 <- PISA_OGR_2018 %>% 
  select(OKUMA_BAGLILIGI, OKUMA_ZEVK, OK_ZORLUK)
saveRDS(df_1,"C:/R/Rders/import/df_1.Rds")
head(miniPISA, 10)
## # A tibble: 10 × 11
##         SINIF   CINSIYET KITAPSAYISI     SES Anne_Egitim Baba_Egitim OKUMA_ZEVK
##    <hvn_lbll> <hvn_lbll>  <hvn_lbll>   <dbl>  <hvn_lbll>  <hvn_lbll>      <dbl>
##  1         10          2           2 -2.45             2           2    -0.289 
##  2         10          2           3 -2.10             2           2     0.604 
##  3         10          1           1 -2.27             1           2     0.638 
##  4          9          2           1  0.0324           6           6    -1.15  
##  5          9          2           2 -0.0674           4           4     0.667 
##  6         10          2           2  0.398            4           6     0.357 
##  7         10          1           3 -0.866            5           5    -0.0886
##  8         10          2           3 -0.158            5           5     0.931 
##  9         10          1           3 -0.626            1           4     1.22  
## 10         10          2           4 -2.28             0           2     0.425 
## # ℹ 4 more variables: OK_YETERLIK <dbl>, Okuloncesi_yil <hvn_lbll>,
## #   OKUL_TUR <hvn_lbll>, ODOKUMA1 <dbl>
library(tidyverse) # paketin aktifleştirilmesi
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.5
## ✔ ggplot2   3.5.1     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ tidyr::extract()   masks magrittr::extract()
## ✖ dplyr::filter()    masks stats::filter()
## ✖ dplyr::lag()       masks stats::lag()
## ✖ purrr::set_names() masks magrittr::set_names()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
load("C:/R/Rders/import/midiPISA.rda")# çalışılacak veri setinin R ortamına aktarılması
midiPISA <- expss::drop_var_labs(midiPISA) # değişken etiketlerinin atılması
load("C:/R/Rders/import/miniPISA.rda")# çalışılacak veri setinin R ortamına aktarılması
miniPISA <- expss::drop_var_labs(miniPISA)
head(midiPISA,10)
## # A tibble: 10 × 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
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
head(miniPISA,10)
## # A tibble: 10 × 11
##    SINIF CINSIYET KITAPSAYISI     SES Anne_Egitim Baba_Egitim OKUMA_ZEVK
##    <dbl>    <dbl>       <dbl>   <dbl>       <dbl>       <dbl>      <dbl>
##  1    10        2           2 -2.45             2           2    -0.289 
##  2    10        2           3 -2.10             2           2     0.604 
##  3    10        1           1 -2.27             1           2     0.638 
##  4     9        2           1  0.0324           6           6    -1.15  
##  5     9        2           2 -0.0674           4           4     0.667 
##  6    10        2           2  0.398            4           6     0.357 
##  7    10        1           3 -0.866            5           5    -0.0886
##  8    10        2           3 -0.158            5           5     0.931 
##  9    10        1           3 -0.626            1           4     1.22  
## 10    10        2           4 -2.28             0           2     0.425 
## # ℹ 4 more variables: OK_YETERLIK <dbl>, Okuloncesi_yil <int>, OKUL_TUR <chr>,
## #   ODOKUMA1 <dbl>

Pipe operatörünün kullanılmasını çok pratik buluyorum. Pipe opratörünü kullanırekn yazılan fonksiyonun sonunda yazılmasına dikkat edilmelidir.

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>

9 veya 10u görmek için veya yani | bu operatörü kullandık. Bu işareti altgr ile yaptık.

midiPISA %>%
 filter(SINIF==9|10) 
## # A tibble: 6,890 × 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,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 %>%
 filter(SINIF==12) 
## # 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>

Bu işlemler konsolda gözükür ama nesne olarak gözükmez. Bunun için nesne tanımlamamız gerekir.

Veri setinde cinsiyete göre filtreleme yapıp kiz ve erkek şeklinde nesneler tanımladık.

kiz <- filter(midiPISA, CINSIYET ==1) #3396 KIZ VAR
erkek <- filter(midiPISA, CINSIYET ==2) #3494 ERKEK VAR

Frekans tablosunda görmek için table fonksiyonunu kullanıyoruz. Fakat bu tablo NA değerlerini vermiyor.

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

Hem annesi hem babası yüksek lisans eğitimi olanları filtrelemek için

midiPISA %>% 
  filter(Anne_Egitim==6 & Baba_Egitim==6)
## # 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>

Annesi veya babasının eğitimi yüksek lisans eğitimi olanları filtrelemek için

midiPISA %>% 
  filter(Anne_Egitim==6 | Baba_Egitim==6)
## # 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>

Değilse ise ünlem kullanıyoruz. Ünlemi parantezin dışına koyuyoruz.

midiPISA %>% 
  filter(!(Anne_Egitim==6 | Baba_Egitim==6))
## # A tibble: 5,251 × 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  79201481     9        2           4           4     0.667           3
##  5  79201652    10        1           5           5    -0.0886          3
##  6  79202033    10        2           5           5     0.931           3
##  7  79202179    10        1           1           4     1.22            3
##  8  79202278    10        2           0           2     0.425           3
##  9  79202313    10        1           1           5     1.58            4
## 10  79202354     9        2           4           4    -1.13            1
## # ℹ 5,241 more rows
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## #   ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## #   ODOKUMA4 <dbl>, ODOKUMA5 <dbl>

Değil fonksiyonun iki kullanımı:

midiPISA %>% filter(!SINIF==12)
## # 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>
midiPISA %>% filter(SINIF!=12)
## # 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>

İstemediğimiz fonksiyonları eksi ile çıkartabiliriz.

midiPISA %>% 
  select(OGRENCIID:ST097Q04TA,-CINSIYET) 
## # 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>

Değişken isimlerinin başlangıcında yer alan harf/rakama göre verileri seçebiliriz.

select(midiPISA, 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

Aynı şekilde değişken isimlerinin sonunda yer alan harf ya da rakama göre seçme işlemini yapabiliriz.

# "TA" ile biten degişkenlerin seçimi
select(midiPISA, 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
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

Pİpe kullanmak istemediğimiz zaman select gibi dplyr paketiinde yer alan paketler kullanılabilir. Bunun için fonksiyon yazıp içine veri setini yazmamız gerekiyor. Fakat ben pipe fonksiyonunu daha pratik buluyorum.

Arrange sıralama yapmaya yarar. Eksi olunca büyükten küçüğe sıralar.

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)
## # 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))
## # 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>

Veri setine yeni sütun eklemek için mutate fonksiyonu kullanılabilir.

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
zevk %>% 
mutate(toplam=rowSums(across(ST097Q01TA: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

Yeni ekleyeceğimiz değişkenin yerini .before yada . after ile belirleyebiliriz.

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

Yeni değişkeni yazıp diğerlerini silmek için transmute kodunu kullanıyoruz.

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

If else fonksiyonu c ve ptyhon gibi dillerde de kullanılıyor. Excel gibi yani.

x <- c(-2,1,-1,-3,3)
ifelse(x<0,"Negatif", "Pozitif")
## [1] "Negatif" "Pozitif" "Negatif" "Negatif" "Pozitif"

Aşağıdaki kodda ifelse öncesinde okul yazdık. Yani yeni kodun ismini tanımladık.

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

Başka bir mutate fonksiyonu kullanım örneği:

v1 <- midiPISA %>%
  mutate(ODOKUMA1_kategorik =
    case_when(
      ODOKUMA1 <=  402.6  ~ "dusuk",
      ODOKUMA1 > 402.6  & ODOKUMA1 <  525.7 ~ "orta",
      ODOKUMA1 >=525.7 ~ "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

If else ile yapılacak olursa iki kod iç içe yazılması gerekir.

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
library(knitr)
v1 %>%  
  group_by(ODOKUMA1_kategorik) %>% 
  summarize(ort= mean(ODOKUMA1),
            sd=sd(ODOKUMA1)) %>% 
kable(digits=2,
      col.names = c("kategori", "ort","sd"))
kategori ort sd
dusuk 352.59 38.86
orta 463.50 34.49
yuksek 577.39 40.58
 v1 %>% count(ODOKUMA1_kategorik) # frekans hesaplanması
## # A tibble: 3 × 2
##   ODOKUMA1_kategorik     n
##   <chr>              <int>
## 1 dusuk               1724
## 2 orta                3443
## 3 yuksek              1723