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