R TİDYVERSE NEDİR? DATA WRANGLİNG VE PRATİK DÖNÜŞÜMLER
R ile veri analizi yaparken asıl zamanın büyük kısmı modele değil, veriyi hazırlamaya gider: kolon adlarını düzeltmek, eksikleri düzenlemek, tabloları birleştirmek, uzun-geniş forma çevirmek… İşte data wrangling denilen bu süreç için tidyverse, R ekosisteminde en pratik “alet çantası”dır.
Tidyverse; birbirini tamamlayan paketlerden oluşan bir koleksiyondur. Okuma (readr), dönüştürme (dplyr, tidyr), metin işleme (stringr), fonksiyonel döngüler (purrr), görselleştirme (ggplot2) gibi adımlar, benzer söz dizimi ve tutarlı tasarım ilkeleriyle tek bir akışa oturur.
Bu yazıda “R tidyverse nedir?” sorusunu yanıtlayacak, gerçekçi örneklerle veri temizleme ve veri dönüştürme adımlarını gösterecek, sonunda da günlük analiz işlerinde nasıl sürdürülebilir bir iş akışı kurabileceğinizi özetleyeceğiz.
R tidyverse nedir ve neden bu kadar yaygın kullanılır?
Tidyverse, “tidy data” yaklaşımını merkezine alan paketler topluluğudur. Tidy veri; her değişkenin bir sütunda, her gözlemin bir satırda, her değer türünün tek bir hücrede tutulduğu düzeni hedefler. Bu düzen, hem okuması kolaydır hem de filtreleme, gruplayıp özetleme, yeniden şekillendirme gibi işlemleri daha tutarlı hale getirir.
Tidyverse’un yaygın olmasının nedeni sadece paket sayısı değildir; aynı işi yapan fonksiyonların benzer isimlendirme ve argüman mantığıyla tasarlanmasıdır. Bu sayede bir kez dplyr ile alıştığınız akış, tidyr veya readr tarafında da doğal şekilde devam eder.
- Tutarlı söz dizimi: benzer fiiller (filter, select, mutate, summarize) ve düzenli argümanlar
- Okunabilir akış: pipe kullanımıyla adım adım dönüşüm
- Pratik veri yapıları: tibble ile daha temiz çıktı ve daha az sürpriz
- Analizden rapora: veri hazırlama + görselleştirme + tekrarlanabilirlik

Kurulum, paketler ve temel çalışma mantığı
Tidyverse tek bir paket gibi görünse de aslında bir paket ailesidir. Çoğu kullanıcı “tidyverse” paketini kurup yükler; bu, temel paketleri birlikte getirir. Yine de projeye göre sadece ihtiyacınız olan paketi yüklemek de mümkündür.
Örneğin bir veri setini okuduktan sonra dplyr ile filtreleyip tidyr ile şekillendirir, ardından ggplot2 ile görselleştirirsiniz. Buradaki ortak dil, veri çerçevesi üzerinde fiil-odaklı dönüşümler ve pipe ile ardışık akıştır.
Tidyverse bileşenleri: dplyr, tidyr, ggplot2 ve diğerleri
En sık kullanılan çekirdek paketler şunlardır: dplyr (satır/sütun işlemleri), tidyr (wide/long dönüşümler), readr (hızlı okuma), stringr (metin), lubridate (tarih-saat), purrr (map ailesi), ggplot2 (grafikler). Hepsi birlikte kullanıldığında tek bir dil gibi çalışır.
Pipe operatörü ile akış kurma (|>) ve okunabilirlik
R’nin yerleşik pipe operatörü |> (veya yaygın kullanımda magrittr’in %>%) ile işlemleri soldan sağa okur gibi yazabilirsiniz. Bu, özellikle veri temizleme adımlarını “yapılacaklar listesi” gibi netleştirir: oku → filtrele → dönüştür → özetle → görselleştir.
# Kurulum ve yükleme (örnek)
install.packages("tidyverse")
library(tidyverse)
# Basit bir tibble oluşturalım
df <- tibble(
city = c("Izmir", "Ankara", "Istanbul", "Izmir"),
sales = c(120, 80, 200, 150),
month = c("2025-01", "2025-01", "2025-02", "2025-02")
)
# Pipe ile akış: filtrele + yeni kolon + özet
df_summary <- df |>
mutate(month = as.Date(paste0(month, "-01"))) |>
group_by(city) |>
summarize(total_sales = sum(sales), .groups = "drop") |>
arrange(desc(total_sales))
df_summary
dplyr ile veri temizleme ve dönüştürme: fiillerle düşünmek
dplyr, data wrangling için en çok kullanılan tidyverse paketidir. Temel yaklaşım, “veri üzerinde fiiller”dir: satırları seç (filter), sütunları seç (select), yeni sütun üret (mutate), sırala (arrange), grupla (group_by) ve özetle (summarize).
Bu fiiller, özellikle iş gereksinimiyle birebir örtüşür. “Sadece 2025 satışlarını al”, “ürün bazında toplam ciroyu çıkar”, “en yüksek üç şehri listele” gibi cümleleri doğrudan kod akışına çevirebilirsiniz.
select, filter, mutate, summarize örnek akış
Aşağıdaki örnekte hem filtreleme hem de dönüşüm adımları var: belirli ayı seçiyoruz, eksik değerleri ele alıyoruz, ardından şehir bazında özetliyoruz. Bu tip akışlar, proje büyüdükçe kodun anlaşılabilirliğini ciddi şekilde artırır.
library(tidyverse)
sales_tbl <- tibble(
city = c("Izmir", "Ankara", "Istanbul", "Izmir", "Ankara"),
month = c("2025-01", "2025-01", "2025-02", "2025-02", "2025-02"),
revenue = c(1200, NA, 3400, 1800, 900),
units = c(12, 8, 20, 15, 9)
)
report <- sales_tbl |>
mutate(
month = as.Date(paste0(month, "-01")),
revenue = coalesce(revenue, 0),
avg_price = if_else(units > 0, revenue / units, NA_real_)
) |>
filter(month >= as.Date("2025-02-01")) |>
group_by(city) |>
summarize(
total_revenue = sum(revenue),
total_units = sum(units),
mean_price = mean(avg_price, na.rm = TRUE),
.groups = "drop"
) |>
arrange(desc(total_revenue))
report
tidyr ile veri şekillendirme: pivot_longer / pivot_wider
Veriler çoğu zaman analiz için uygun formda gelmez. Örneğin aylara göre sütun açılmış “geniş” tablolar, görselleştirme ve modelleme için “uzun” forma daha uygundur. tidyr pivot fonksiyonları, bu dönüşümleri kısa ve güvenli şekilde yapmanızı sağlar.
Wide → Long: uzun veri ile esnek analiz
Aşağıdaki örnekte aylar sütunlarda. Bunu uzun forma çevirip her satırı “şehir-ay” gözlemi haline getiriyoruz. Sonrasında ggplot2 gibi araçlarla trend grafiği üretmek daha akıcı olur.
Long → Wide: raporlama için hızlı tablolar
Özet raporlar üretirken bazen tekrar geniş forma dönmek istersiniz. pivot_wider ile anahtar-değer sütunlarını seçip raporlamaya uygun bir tablo elde edebilirsiniz. Buradaki önemli nokta, anahtarın benzersiz olması ve eksik kombinasyonlar için mantıklı varsayımlar yapmaktır.

readr, stringr, lubridate: gerçek hayatta en çok işe yarayan yardımcılar
Data wrangling pratikte sadece sayısal dönüşüm değildir. Dosya okuma, metin temizleme ve tarih-saat ayrıştırma, analiz projelerinin sessiz yükünü taşır. Tidyverse içindeki readr, stringr ve lubridate bu işleri hızlı ve tutarlı şekilde yapar.
CSV/Excel okuma ve kodlamaya dikkat etme
readr; hızlı okuma, sütun türü tahmini ve belirli kolonları bilinçli şekilde tanımlama gibi avantajlar sunar. Türkçe karakterler ve farklı ayracı olan dosyalarda (noktalı virgül gibi) doğru ayarları yapmak, sonraki tüm adımların sağlıklı çalışmasını sağlar.
Metin temizliği ve standartlaştırma (stringr)
Ürün adları, kategori etiketleri veya kullanıcı girdileri gibi metin alanları; boşluk, büyük-küçük harf ve karakter farklılıkları yüzünden sorun çıkarabilir. stringr ile trim, replace, detect gibi işlemleri düzenli ifadelerle güvenle yönetebilirsiniz. Burada hedef, tutarlı kategoriler elde etmek ve birleşmelerin (join) sorunsuz çalışmasını sağlamaktır.
purrr ile tekrarlı işlerinizi fonksiyonel hale getirin
Benzer dönüşümü birden fazla tabloya uygulamak, farklı dosyaları aynı şablonla okumak veya şehir bazında ayrı rapor üretmek gibi işler, klasik döngülerle yazıldığında uzayıp gider. purrr, bu tekrarı map ailesiyle daha temiz ve test edilebilir bir yapıya taşır.
map ile çoklu dosya/çoklu tablo akışı
Örneğin bir klasörden tüm CSV’leri okuyup aynı temizleme fonksiyonunu uygulayabilir, sonra hepsini birleştirebilirsiniz. Böylece akışınız hem kısa olur hem de yeni dosya eklendiğinde kodu değiştirmek yerine sadece veriyi güncellersiniz.

Tipik tidyverse iş akışı: oku → temizle → dönüştür → görselleştir
Günlük analizlerde tidyverse, adımları net bir sıraya koyar. İlk hedef, veriyi “tidy” hale getirmek; ikinci hedef, ihtiyacınız olan metriği üretmek; üçüncü hedef, çıktıyı paylaşılabilir hale getirmektir. Bu yaklaşım, özellikle ekip içinde sürdürülebilirliği artırır.
- Veriyi güvenle içeri alma (readr)
- Kolon adlarını ve tipleri standardize etme
- Eksikleri ve aykırı değerleri ele alma
- Analiz için gerekli dönüşümleri uygulama (dplyr + tidyr)
- Hızlı doğrulama ve anlatı için görselleştirme (ggplot2)
Sık yapılan hatalar ve küçük ipuçları
Tidyverse ile hız kazanırken bazı alışkanlıklar hataya davetiye çıkarabilir. Örneğin dönüşüm adımlarını tek seferde yazıp kontrol etmemek, kolon türlerini belirsiz bırakmak veya join sonrası satır sayısını doğrulamamak gibi. Küçük kontrol noktaları eklemek, sonradan büyük zaman kazandırır.
Join sonrası satır sayısını doğrulama
Birleştirme (left_join vb.) sonrasında satır sayısı beklenmedik şekilde artıyorsa, anahtar kolonlarınız benzersiz olmayabilir. Böyle durumlarda önce anahtarların eşsizliğini kontrol etmek, ardından gerekiyorsa ön-özetleme yapmak daha güvenlidir.
Tip dönüşümlerini erken yapmak
Tarih, sayısal ve kategorik alanları erken dönüştürmek; filtrelerin, sıralamaların ve özetlerin doğru çalışmasını sağlar. Özellikle tarih alanları metin olarak kalırsa “Şubat” ile “Ekim” gibi sıralamalar sürpriz sonuçlar üretebilir.
Devam etmek isteyenler için: yapılandırılmış öğrenme yolu
Eğer tidyverse ile veri temizleme ve dönüşüm pratiklerini sistemli şekilde ilerletmek istiyorsanız, örnek veri setleri ve proje akışlarıyla ilerlemek en hızlı yoldur. Özellikle dplyr fiilleri, tidyr pivot mantığı ve gerçek dosyalarla çalışma (readr) bir arada ele alındığında, analizin başından sonuna kadar daha az sürtünme yaşarsınız.
Bu süreci daha planlı götürmek için şu içeriğe göz atabilirsiniz: R Veri Analizi Eğitimi.
Özetle: “R tidyverse nedir?” sorusunun pratik cevabı, data wrangling işinizi hızlandıran, okunabilir ve tutarlı bir iş akışı kurduran paket ekosistemidir. Doğru alışkanlıklarla hem daha hızlı kod yazar hem de daha güvenilir sonuçlar üretirsiniz.


