Veri gazeteciliği genel olarak veriyi inceleyerek, tarayarak, analiz ederek ve görselleştirerek verideki ilişkiler ve çıktıların habercilik pratiklerinde kullanılması olarak tanımlanıyor. Kısaca gazetecilik faaliyetleri için verinin gücünden yararlanarak hikâyeler anlatmak da denebilir. Genellikle veri haberciliği pratiklerinde de gazetecilerden veri noktalarını birleştirerek,
karşılaştırarak, oranlayarak bir sonuca varmaları ve anlamlandırmaları bekleniyor. Bazı durumlarda zahmetli olabilen veri birleştirme sürecini R ekosisteminde nasıl gerçekleştirebileceğimizi bu yazıda anlatacağım.
Neden veri birleştirme (data joining) işlemine ihtiyaç duyuyoruz?
Veri setleri genelde belirli kategorilerde belli başlı değişkenlerle sunuluyor. Fakat her veri tablosunun istediğimiz tüm değişkenleri içermesi mümkün değil. Bu nedenle farklı değişkenler arasındaki ilişkileri inceleyebilmemiz ve belirli korelasyonlar elde edebilmemiz için veri setlerini ortak değişkenler yardımıyla birleştirmemiz gerekebiliyor. Örneğin, Türkiye’de iller bazında okuma-yazma oranının doğum oranları üzerine etkisini incelediğimizi düşünelim. Aynı veri tablosu içinde bu iki değişkeni bulamayacağımız için her iki değişkeni barındıran veri setini indirmeli, il sütunu yardımıyla birleştirme (join) işlemine başvurmalıyız. Tabi ki bu işlemi ofis programları ve Tableau yazılımı ile de gerçekleştirebiliyoruz, ama R ekosisteminin sunduğu olanaklar bu işlemi kat be kat daha kolaylaştırıyor.
Kullanılacak paketler ve veri setleri
Veri birleştirme işleminde “R Dplyr paketi ile veri nasıl işlenir ve analiz edilir?” yazımda ele aldığım veri işleme ve veri manipülasyonu pratiklerini kolaylaştıran dplyr paketini kullanacağım. Bu uygulamada 6 ayrı dplyr komutu ile eldeki veri setlerinin durumuna göre belirli işlemler yapacağız. Uygulamaya geçmeden önce kullanacağımız verilere göz atalım.
23 Haziran İBB seçim verisi
İlk veri setinde partilerin oy dağılımlarının bulunduğu değişkenleri bir tablodan diğerine aktaracağız. Bu işlemde left_join ve right_join gibi komutlar kullanacağız.
Freedom House Dünya Özgürlükler Raporu ve Yolsuzluk Algısı Endeksi verileri
Veri birleştirme aşamasına geçmeden önce şunu hatırlamakta fayda var: Ancak ve ancak iki veri seti arasında ortak değişken veya değişkenler varsa bu işlem sonrası yapılan analiz anlamlı olur. Yukarıdaki veri setlerinde ilçe ve ülke sütunları veri setlerinde ortak değişken olarak göze çarpıyor.
1. left_join ve right_join yardımıyla verileri birleştirme
left_join ve right_join komutları veri setlerinin konumuna göre ortak bir değişken yardımıyla bir veri setindeki verileri bir diğerine aktarıyor. Ortak değişken bir nevi bu iki veri setini birleştirme sürecinde anahtar rolü görüyor Ortak değişkene sahip X ve Y adlı iki ayrı veri setimizin olduğunu düşünelim, bu iki veri setini birleştirmek için normalde kullanmamız gereken kod:
yeni_veri <- right_join(x,y, by =”ortak degişken”) x’deki verileri y’ye aktarılıyor yeni_veri <- left_join(x,y, by =”ortak degişken”) y’deki veriler x’e aktarılıyor
Ama bu işlemi aynı zamanda daha önceki yazılarımda da bahsettiğim gibi zincir operatörü (%>%) ile daha akıcı hâle getirebilir birçok işlemi birbirine bağlayabiliyoruz.
yeni_veri <- x %>% right_join(y, by=”ortak değişken”) yeni_veri <- x %>% left_join(y, by=”ortak değişken”)
Bu noktada önemli olan hangi veri setindeki değerleri hangisine aktaracağınız, ona göre left_join ve right_join komutları tercih edilebilir.
Yapacağımız veri birleştirme işlemine gelirsek: Akp ve Chp oy oranlarını bir tablodan diğerine aktaracağız. İlk işlemde Akp oy dağılımının bulunduğu sütunu Chp’nin oy oranlarının yer aldığı veri tablosuna taşıdık. Bu aşamada ilçe sütunu eşleştirici anahtar değişken görevi gördü.
İkinci işlemde ise bu sefer left_join komutunu kullanarak Chp’nin oy dağılımını Akp’nin oy oranlarının bulunduğu tabloya aktardık. Bu işlemleri animasyonlarda gösterildiği şekilde de yapabilirdik.
Son olarak partiler arası oy farkını yüzdelik olarak ilçe bazında görselleştirelim. Görüldüğü üzere İmamoğlu, Yıldırım’a en büyük farkı (%68) Beşiktaş’ta atarken Yıldırım lehine fark (%33) en fazla Sultanbeyli’de gerçekleşti.
2. Daha karmaşık veri setlerini birleştirme
O hâlde ilk olarak bu iki araştırmanın veyahut veri setinin sahip olduğu ortak verileri bir araya getirelim. Bu işlemi inner_join () komutu ile yapacağız. Çalışma mantığı left_join ve right_join fonksiyonlarında olduğu gibi çalışıyor. Fakat işlevi aşağıdaki animasyonda olduğu gibi iki veri setinde bulunan ortak değerleri anahtar değişken yardımıyla birleştirmek.
İşlemi yine benzer bir şekilde gerçekleştirdik. Sol altta görülüyor ki her iki veri setindeki ülke sütununda 169 değer benzer.
Benzer veri noktalarına ulaştık. Peki ortak olmayan ne kadar değere sahipler? Bu işlemi ise inner_join() komutunun zıttı olarak görebileceğimiz anti_join() komutu ile gerçekleştireceğiz. Animasyonda görüldüğü üzere anti_join() işlemde ilk kullanılan veri setindeki değerleri diğer veri setini kullanarak filtreliyor.
Şimdi anti_join yardımıyla Yolsuzluk Algısı Endeksinde bulunan ama Dünyada Özgürlükler Raporunda bulunmayan verileri filtreleyelim. Öyle görünüyor ki sadece 11 veri noktası uyuşmamış. Bu işlemi veri setlerinin kodda kullanılma sırasını değiştirerek Dünya Özgürlükler Raporunda bulunan ama Yolsuzluk Algısı Endeksine dahil edilmeyen ülkeleri de bulabiliriz.
Kısacası inner_join komutunu iki veri tablosundaki benzer değerleri, anti_join’i ise farklı değerleri bulmak için kullanıyoruz. Peki iki veri setindeki tüm değerleri veri noktalarının aynı olup olmadığına bakmadan nasıl birleştirebiliriz. Bu aşamada full_join() komutu imdada yetişiyor. Animasyonda olduğu gibi iki veri seti ortak olmayan bir değere sahip olsa da birleştirilebiliyor.
Görüldüğü üzere her iki veri setindeki veri noktalarını birleştirdik. Bu aşamada bir diğer önemli nokta şu: Her iki tablosunda benzer değerler olmadığı durumlarda değişken karşılığı olmayan satır NA (veri noktasının olmadığını ifade eden) değeri alır. Nitekim aşağıdaki görselde NA değerlerini görebilirsiniz.
Son olarak birleştirdiğimiz veriyi Flourish ile interaktif bir şekilde görselleştirelim.
Ek komutlar ve kaynaklar
Bu yazıda kullandığım veri birleştirme komutları sıklıkla kullanılan dplyr komutları arasında sayılabilir. Ama bunların dışında fonksiyonlar da var ve veri manipülasyonu&birleştirme işlemleri için esnek yollar sunabiliyor. Aşağıdaki cheatsheet yardımıyla bu komutlara göz atabilirsiniz.
- R’a dair Türkçe kaynak kitaplara göz atabilirsiniz: Kaynak 1, Kaynak 2.
- Bu yazıda kullanılan tüm kodlar ve veri setlerine buradan ulaşabilirsiniz.
- Dplyr komutlarına dair görseller Garrick Aden-Buie’nin GitHub sayfasından alınmıştır.