dplyr
fonksiyonunu ele aldık.Paketleri yükleme
##
## 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
Veri setlerini yükleme
midiPISA veri setini yükleme
count()
count()
fonksiyonu, frekans tablosu oluşturmak için
kullanılır. Genellikle pipe operatörü (%>%)
ile birlikte
veri işleme adımlarında sıkça kullanılır. Bu fonksiyon belirli bir
değişkene göre gözlem sayısını hesaplayabilir.
## # A tibble: 2 × 2
## CINSIYET n
## <dbl+lbl> <int>
## 1 1 [Kiz] 3396
## 2 2 [Erkek] 3494
## # A tibble: 2 × 2
## CINSIYET n
## <dbl+lbl> <int>
## 1 2 [Erkek] 3494
## 2 1 [Kiz] 3396
Bu örnekte, CINSIYET değişkenine göre dağılım incelenmiştir. Sıralama yaparak en yaygın kategorileri hızlıca görebiliyoruz.
summarise()
Summarise()
fonksiyonu, belirli bir sütun için özet
istatistikler hesaplar (örneğinmean()
, min()
,
max()
). Özellikle veri setinde hızlıca özet
bilgi almak için çok kullanışlıdır.
## # A tibble: 1 × 1
## mean
## <dbl>
## 1 464.
# Ortalamayı `ortalama` sütun adı ile isimlendirme
midiPISA %>%
summarise(ortalama = mean(ODOKUMA1))
## # A tibble: 1 × 1
## ortalama
## <dbl>
## 1 464.
Bu örnekte ODOKUMA1
değişkeninin ortalaması
hesaplanmıştır. Kolonları isimlendirme özelliği, çıktıların daha
anlaşılır olmasını sağlar.
summarise()
ve
group_by()
Summarise()
ve group_by()
birlikte
kullanıldığında, veri alt gruplarına göre özet istatistikler
elde edilebilir.
Örneğin, CINSIYET
değişkenine göre gruplandırarak her bir
grup için özet istatistikler hesaplanabilir.
# Cinsiyete göre okuma puanlarının özetlenmesi
midiPISA %>%
group_by(CINSIYET) %>%
summarise(mean = mean(ODOKUMA1), sd = sd(ODOKUMA1), min = min(ODOKUMA1), max = max(ODOKUMA1))
## # A tibble: 2 × 5
## CINSIYET mean sd min max
## <dbl+lbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 [Kiz] 478. 83.7 236. 772.
## 2 2 [Erkek] 451. 89.6 176. 747.
Bu örnek, gruplandırılmış özetler ile erkek ve kız öğrencilerin ortalama, standart sapma, minimum ve maksimum puanlarını karşılaştırmamızı sağlar.
across()
across()
fonksiyonu, aynı anda birden fazla sütun
üzerinde işlem yapmak için kullanılır.
Genellikle summarise()
ve mutate()
içinde
kullanılarak işlemleri topluca yapmak kolaylaşır.
# Birden fazla sütun için ortalama ve standart sapma hesaplama
midiPISA %>%
summarise(across(starts_with("OD"), list(mean = mean, sd = sd)))
## # A tibble: 1 × 10
## ODOKUMA1_mean ODOKUMA1_sd ODOKUMA2_mean ODOKUMA2_sd ODOKUMA3_mean ODOKUMA3_sd
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 464. 87.8 464. 87.7 465. 87.1
## # ℹ 4 more variables: ODOKUMA4_mean <dbl>, ODOKUMA4_sd <dbl>,
## # ODOKUMA5_mean <dbl>, ODOKUMA5_sd <dbl>
Bu örnekte, across()
kullanılarak “OD”
ile başlayan tüm sütunlar için hem ortalama hem de standart
sapma hesaplanmıştır.
NOT
Önceden summarise_at()
, summarise_if()
,
summarise_all()
gibi fonksiyonlar kullanılırken, artık
across()
bu işlevlerin yerini almıştır.
# haven_labelled sütunları numeric tipe dönüştürme
midiPISA <- midiPISA %>%
mutate(across(where(~ inherits(., "haven_labelled")), as.numeric))
# Ardından, across() işlemini uygulama
midiPISA %>%
summarise(
across(
where(is.numeric),
list(mean = ~ mean(., na.rm = TRUE), sd = ~ sd(., na.rm = TRUE))
)
)
## # A tibble: 1 × 32
## OGRENCIID_mean OGRENCIID_sd SINIF_mean SINIF_sd CINSIYET_mean CINSIYET_sd
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 79203623. 2087. 9.84 0.458 1.51 0.500
## # ℹ 26 more variables: Anne_Egitim_mean <dbl>, Anne_Egitim_sd <dbl>,
## # Baba_Egitim_mean <dbl>, Baba_Egitim_sd <dbl>, OKUMA_ZEVK_mean <dbl>,
## # OKUMA_ZEVK_sd <dbl>, ST097Q01TA_mean <dbl>, ST097Q01TA_sd <dbl>,
## # ST097Q02TA_mean <dbl>, ST097Q02TA_sd <dbl>, ST097Q03TA_mean <dbl>,
## # ST097Q03TA_sd <dbl>, ST097Q04TA_mean <dbl>, ST097Q04TA_sd <dbl>,
## # ST097Q05TA_mean <dbl>, ST097Q05TA_sd <dbl>, ODOKUMA1_mean <dbl>,
## # ODOKUMA1_sd <dbl>, ODOKUMA2_mean <dbl>, ODOKUMA2_sd <dbl>, …
# Sayısal değişkenlerin ortalama ve standart sapmalarını hesaplama
midiPISA %>%
summarise(across(where(is.numeric), list(mean = mean, sd = sd), na.rm = TRUE))
## Warning: There was 1 warning in `summarise()`.
## ℹ In argument: `across(where(is.numeric), list(mean = mean, sd = sd), na.rm =
## TRUE)`.
## Caused by warning:
## ! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
## Supply arguments directly to `.fns` through an anonymous function instead.
##
## # Previously
## across(a:b, mean, na.rm = TRUE)
##
## # Now
## across(a:b, \(x) mean(x, na.rm = TRUE))
## # A tibble: 1 × 32
## OGRENCIID_mean OGRENCIID_sd SINIF_mean SINIF_sd CINSIYET_mean CINSIYET_sd
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 79203623. 2087. 9.84 0.458 1.51 0.500
## # ℹ 26 more variables: Anne_Egitim_mean <dbl>, Anne_Egitim_sd <dbl>,
## # Baba_Egitim_mean <dbl>, Baba_Egitim_sd <dbl>, OKUMA_ZEVK_mean <dbl>,
## # OKUMA_ZEVK_sd <dbl>, ST097Q01TA_mean <dbl>, ST097Q01TA_sd <dbl>,
## # ST097Q02TA_mean <dbl>, ST097Q02TA_sd <dbl>, ST097Q03TA_mean <dbl>,
## # ST097Q03TA_sd <dbl>, ST097Q04TA_mean <dbl>, ST097Q04TA_sd <dbl>,
## # ST097Q05TA_mean <dbl>, ST097Q05TA_sd <dbl>, ODOKUMA1_mean <dbl>,
## # ODOKUMA1_sd <dbl>, ODOKUMA2_mean <dbl>, ODOKUMA2_sd <dbl>, …
Across()
ile çalışmak, modern ve sade bir
yaklaşım sunarak dplyr’ın basitlik ve esneklik ilkelerine uyum
sağlar.
top_n()
top_n()
fonksiyonu, belirli bir değişkenin
en yüksek veya en düşük değerlerine göre satırları
seçmemize olanak tanır.
Örneğin, en yüksek performans gösteren öğrencileri bulmak için
kullanılabilir.
# En yüksek okuma puanına sahip ilk 5 öğrenci (her bir cinsiyet için)
midiPISA %>%
group_by(CINSIYET) %>%
top_n(5, ODOKUMA1)
## # A tibble: 10 × 16
## # Groups: CINSIYET [2]
## OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 79200826 10 1 6 6 2.61 3
## 2 79201125 10 2 5 5 0.370 4
## 3 79207038 9 2 6 6 2.61 3
## 4 79202197 10 1 6 6 0.638 3
## 5 79200887 9 1 6 6 2.08 3
## 6 79205833 9 2 4 6 2.61 4
## 7 79201373 10 1 6 6 1.33 4
## 8 79200072 10 2 4 4 1.60 4
## 9 79200920 10 2 5 6 0.201 4
## 10 79202969 10 1 6 6 2.08 3
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## # ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## # ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
Bu örnekte, her cinsiyetten en yüksek 5 okuma puanı sıralanarak görüntülenmiştir.
top_n()
ve -
Negatif bir değerle top_n()
kullanımı, en düşük
değerlere göre sıralama yapar ve belirli bir sayıda en düşük gözlemi
seçer.
# En düşük okuma puanına sahip ilk 5 öğrenci (her bir cinsiyet için)
midiPISA %>%
group_by(CINSIYET) %>%
top_n(-5, ODOKUMA1)
## # A tibble: 10 × 16
## # Groups: CINSIYET [2]
## OGRENCIID SINIF CINSIYET Anne_Egitim Baba_Egitim OKUMA_ZEVK ST097Q01TA
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 79203445 10 2 6 1 -0.0738 1
## 2 79202889 9 2 1 2 -0.412 3
## 3 79202924 9 2 6 6 NA 3
## 4 79204366 9 1 2 2 0.638 4
## 5 79200572 11 1 2 2 0.557 4
## 6 79203329 9 2 2 2 0.0127 1
## 7 79206761 10 1 1 2 0.852 1
## 8 79201699 10 1 5 5 0.182 3
## 9 79201615 9 1 2 NA NA 3
## 10 79201966 10 2 6 6 -0.116 3
## # ℹ 9 more variables: ST097Q02TA <dbl>, ST097Q03TA <dbl>, ST097Q04TA <dbl>,
## # ST097Q05TA <dbl>, ODOKUMA1 <dbl>, ODOKUMA2 <dbl>, ODOKUMA3 <dbl>,
## # ODOKUMA4 <dbl>, ODOKUMA5 <dbl>
Bu örnek, en düşük performans gösteren öğrencileri belirlemek için negatif sıralama kullanmanın faydasını gösterir.
join()
dplyr
paketinde left_join()
,
right_join()
, inner_join()
,
full_join()
, semi_join()
, ve
anti_join()
gibi fonksiyonlar iki veri setini birleştirmek
için kullanılır.
Bu fonksiyonlar, veri setlerinin anahtar değişkenlerine göre eşleşen
veya eşleşmeyen satırları belirlememize olanak tanır.
left_join örneği:
midiPISA1 <- midiPISA %>% select(OGRENCIID,CINSIYET,ST097Q01TA,ST097Q02TA) #değişkenlerin seçimi
midiPISA1<-midiPISA1[1:6,] #veri setinin ilk 6 satırının seçilmesi
midiPISA1
## # A tibble: 6 × 4
## OGRENCIID CINSIYET ST097Q01TA ST097Q02TA
## <dbl> <dbl> <dbl> <dbl>
## 1 79200768 2 1 2
## 2 79201064 2 3 2
## 3 79201118 1 2 3
## 4 79201275 2 2 2
## 5 79201481 2 3 3
## 6 79201556 2 3 3
inner_join örneği
Önce midiPISA2 oluşturulur.
#değişkenlerin seçimi
midiPISA2<- midiPISA %>% select(OGRENCIID,OKUMA_ZEVK,ODOKUMA1)
midiPISA2<-midiPISA2[1:6,] #veri setinin ilk 6 satırının seçilmesi
midiPISA2<-midiPISA2[-2,] #veri setinin 2. satırının çıkarılması
midiPISA2
## # A tibble: 5 × 3
## OGRENCIID OKUMA_ZEVK ODOKUMA1
## <dbl> <dbl> <dbl>
## 1 79200768 -0.289 376.
## 2 79201118 0.638 396.
## 3 79201275 -1.15 393.
## 4 79201481 0.667 552.
## 5 79201556 0.357 441.
## Joining with `by = join_by(OGRENCIID)`
## # A tibble: 5 × 6
## OGRENCIID CINSIYET ST097Q01TA ST097Q02TA OKUMA_ZEVK ODOKUMA1
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 79200768 2 1 2 -0.289 376.
## 2 79201118 1 2 3 0.638 396.
## 3 79201275 2 2 2 -1.15 393.
## 4 79201481 2 3 3 0.667 552.
## 5 79201556 2 3 3 0.357 441.
Her join türü, veri setleri arasında esnek bir şekilde ilişki kurmamızı sağlar.
gather()
ve
spread()
gather()
fonksiyonu geniş formatlı veriyi uzun formata
çevirirken, spread()
fonksiyonu tam tersini yapar. Bu
dönüşüm, veriyi temizleme ve hazırlamada önemlidir.
genisveri<- midiPISA %>% select(OGRENCIID,ODOKUMA1:ODOKUMA5) #belli değişkenlerin seçilmesi
genisveri %>% head(6) # verinin ilk 6 satırının görüntülenmesi
## # A tibble: 6 × 6
## OGRENCIID ODOKUMA1 ODOKUMA2 ODOKUMA3 ODOKUMA4 ODOKUMA5
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 79200768 376. 418. 421. 414. 434.
## 2 79201064 512. 473. 564. 485. 500.
## 3 79201118 396. 414. 423. 452. 392.
## 4 79201275 393. 429. 365. 383. 379.
## 5 79201481 552. 570. 563. 531. 532.
## 6 79201556 441. 416. 407. 437. 473.
## Warning: attributes are not identical across measure variables; they will be
## dropped
## # A tibble: 10 × 3
## OGRENCIID O_OD okumapuan
## <dbl> <chr> <dbl>
## 1 79200001 ODOKUMA1 450.
## 2 79200001 ODOKUMA2 458.
## 3 79200001 ODOKUMA3 413.
## 4 79200001 ODOKUMA4 430.
## 5 79200001 ODOKUMA5 439.
## 6 79200002 ODOKUMA1 669.
## 7 79200002 ODOKUMA2 666.
## 8 79200002 ODOKUMA3 685.
## 9 79200002 ODOKUMA4 665.
## 10 79200002 ODOKUMA5 660.
Bu pivot fonksiyonları, veri görselleştirme veya analiz için veriyi hazırlamada çok değerlidir.
pivot_longer()
ve
pivot_wider()
gather()
ve spread()
fonksiyonlarına
alternatif olarak pivot_longer()
ve
pivot_wider()
bize esneklik sunar.
genisveri <- midiPISA %>% select(OGRENCIID,ODOKUMA1:ODOKUMA5) #belli değişkenlerin seçilmesi
genisveri %>% head(6) # verinin ilk 6 satırının görüntülenmesi
## # A tibble: 6 × 6
## OGRENCIID ODOKUMA1 ODOKUMA2 ODOKUMA3 ODOKUMA4 ODOKUMA5
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 79200768 376. 418. 421. 414. 434.
## 2 79201064 512. 473. 564. 485. 500.
## 3 79201118 396. 414. 423. 452. 392.
## 4 79201275 393. 429. 365. 383. 379.
## 5 79201481 552. 570. 563. 531. 532.
## 6 79201556 441. 416. 407. 437. 473.
uzun <- genisveri %>% pivot_longer(names_to="okumapuan",values_to="deger",cols=ODOKUMA1:ODOKUMA5)
uzun %>% head(5)
## # A tibble: 5 × 3
## OGRENCIID okumapuan deger
## <dbl> <chr> <dbl>
## 1 79200768 ODOKUMA1 376.
## 2 79200768 ODOKUMA2 418.
## 3 79200768 ODOKUMA3 421.
## 4 79200768 ODOKUMA4 414.
## 5 79200768 ODOKUMA5 434.
Bu fonksiyonlar, veriyi düzenli hale getirmede ve analiz öncesi düzenlemelerde büyük kolaylık sağlar.
separate()
separate()
fonksiyonu, bir sütunu birden fazla sütuna
ayırır. Bu özellik, değerlerin bir sütunda birleştirildiği durumlarda
faydalıdır.
uzun_v1 <- uzun %>% separate(okumapuan, c("OD","Sayi"),"MA") # bir sütunu iki sütuna ayırma
uzun_v1 %>% head(3) #ilk üç satırın görüntülenmesi
## # A tibble: 3 × 4
## OGRENCIID OD Sayi deger
## <dbl> <chr> <chr> <dbl>
## 1 79200768 ODOKU 1 376.
## 2 79200768 ODOKU 2 418.
## 3 79200768 ODOKU 3 421.
Bu işlem, karmaşık sütun değerlerini anlamlı parçalara ayırmamıza yardımcı olur.
unite()
unite()
fonksiyonu separate()
işleminin
tersini yapar; iki veya daha fazla sütunu birleştirir.
# İki sütunu birleştirerek tek bir kimlik oluşturma
uzun_v1 %>% unite("ODOKUMA", OD, Sayi, sep = "_")
## # A tibble: 34,450 × 3
## OGRENCIID ODOKUMA deger
## <dbl> <chr> <dbl>
## 1 79200768 ODOKU_1 376.
## 2 79200768 ODOKU_2 418.
## 3 79200768 ODOKU_3 421.
## 4 79200768 ODOKU_4 414.
## 5 79200768 ODOKU_5 434.
## 6 79201064 ODOKU_1 512.
## 7 79201064 ODOKU_2 473.
## 8 79201064 ODOKU_3 564.
## 9 79201064 ODOKU_4 485.
## 10 79201064 ODOKU_5 500.
## # ℹ 34,440 more rows
Unite()
fonksiyonu, özellikle tanımlayıcı birleşik
sütunlar oluşturmak için yararlıdır.
. Sonuç olarak, bu derste ele alınan fonksiyonlar R dilinde veri
düzenleme ve analizinde temel araçlardır.
. Her bir fonksiyon, veriyi hızlı ve verimli bir şekilde düzenlememize
olanak tanır.
. R’de veri manipülasyonu tekniklerini öğrenmek, verinin analiz ve
görselleştirme süreçlerinde daha etkin kullanılmasını sağlayacaktır.