R ile Veri Manipülasyonu: Tidyverse Dplyr

Veri manipülasyonu için en çok tercih edilen dillerin başında R gelmektedir. R programlama ile çalışan bir veri bilimcisinin olmazsa olmaz araçların başında ise Tidyverse paket serisi gelmektedir. R ile Veri Manipülasyonu nasıl gerçekleştirilir ve Tidyverse Dplyr ile neler yapılabilir bunlara bir göz atalım.



R ile Veri Manipülasyonu: Tidyverse Dplyr
Geliştiricisinin Hadley Wickham olduğu meşhur R pakedi Tidyverse

Paket Kurulumu

Veri manipülasyonu alanında Python dilindeki Numpy ve Pandas nasıl bir vazgeçilmez ikiliyse R dilinde de bu vazgeçilmezliği oluşturan paket olarak Tidyverse karşımıza çıkıyor. RStudio’ya tidyverse pakedini kurmak için öncelikle install.packages("tidyverse") kodunu yazıp ortamımıza indiriyor ve sonra library(tidyverse) ifadesi ile kütüphaneyi çağırıyoruz. Bu yazıda meşhur iris veri seti üzerinden gideceğiz ve bu veri seti R’da yüklü olarak geldiği için View(iris) kodu ile veri setine doğrudan erişim sağlayabiliyoruz.

Paket Fonksiyonları ile Veri Manipülasyonuna Giriş

Kurulum işlerimden sonra r ile veri manipülasyonu konusuna giriş için fonksiyonları tek tek kullanacağız.

iris_new <- iris %>% select(Sepal.Length , Sepal.Width)
View(iris_new)

Yukarıdaki select fonksiyonu ile değişkenler arasından sepal length ve sepal width olmak üzere 2 seçim yaptık ve bunlar üzerinde çalışmak için %>% ifadesi ile bunları yeni bir veri setine atadık. Karşımıza çıkan iris_new adlı veri setinde sadece iki adet sütun bulunmaktadır. Aynı işlemi satırlar üzerinde yapmak istiyoruz diyelim ve ilk 10 satırı seçmek istiyoruz. Bunun için iris %>% slice(1:10) kodunu yazıyoruz. Slice fonksiyonu bize satırlar üzerinde seçim yapma hakkı verir.

Belirli bir değişkendeki minimum ve maksiumum değerleri seçmek istiyoruz diyelim ve bunun için sepal lenght fonksiyonunu ele alalım. Aşağıdaki kodu yazdığımızda, program bize istediğimiz sütundaki en küçük ve en büyük 5 değeri getirecektir.

iris %>% slice_min(order_by = Sepal.Length , n = 5)
iris %>% slice_max(order_by = Sepal.Length , n = 5)

Rastgele 30 örnek almak istediğimizi düşünelim mesela. Veri setinde istediğimiz miktarda rastgele gözlem yapmak için ise aşağıdaki kodu yazmamız gerekir.

iris %>% slice_sample(n = 30)

Kategorik değişkenler bazında tekrar etmeyen değerleri incelemek için setten spices adlı değişkeni ele alıp iris %>% distinct(Species) kodunu yazdığımız zaman unique değerleri çağırıyoruz. Distinct fonksiyonu tekrar etmeden değerleri görmemizi sağlar.

Değerleri sıralamak istediğimiz zaman arrange() fonksiyonunu kullanmamız gerekmetedir. Sepal width değişkeni üzerinde değerleri küçükten büyüğe sıralamak istersek iris %>% arrange(Sepal.Width ) kodunu yazmamız yeterli olacaktır. Eğer aynı işlemi iki değişkeni beraber sıralamak için kullanmak istersek iris %>% arrange(Sepal.Width ,Sepal.Length) örneğindeki gibi yazabiliriz. Burada ilk girilen argüman öncelikle olduğu için önce sepal width değişkeninin değerleri baz alınarak sıralama yapılır.

Veri setine bakıp hızlı bir fikir edinmek için temel istatistiki değerlere ulaşmak istediğimizi varsayalım. Bunun için summarise() fonksiyonunu kullanmalıyız. Sepal length değişkeni üzerinde ortalama, medyan ve standart sapma gibi değerleri görmek istiyorsak aşağıdaki kodu çalıştırmalıyız.



iris %>% summarise( Mean = mean(Sepal.Length) ,
Median = median(Sepal.Length) ,
Sd = sd(Sepal.Length))

SQL sorgularına benzer bir sorgu işlemi gerçekleştirmek istediğimiz zaman devreye filter() fonksiyonu giriyor. Diyelim sepal length değişkeninde 5’ten küçük, sepal width değişkeninde 3’ten büyük değerleri görmek istiyoruz. Bunun için komut satırına ;

iris %>% filter(Sepal.Length < 5 , Sepal.Width > 3)iris %>% filter(Sepal.Length < 5 , Sepal.Width > 3) ifadesini yazmamız yeterli olacaktır. Eğer ikisini beraber değil de ikisinden biri olarak istersek yani araaya veya bağlacını koymamız gerekirse | sembolünü kullanıp aşağıdaki kodu yazabiliriz.

iris %>% filter(Sepal.Length < 5 | Sepal.Width > 3)

Son olarak mutate() fonksiyonunu ele alalım. Diyelim sepal length değişkeninde verilerin kendisi değil de logaritması alınmış halini görmek istiyoruz. Bunun için mutate() fonksiyonunu şu şekilde kullanabiliriz.

iris %>% mutate(Sepal.Length = log(Sepal.Length))

Eğer logaritmasının alınmış halini tabloda yeni bir sütunda görmek isteyip, değişkenin orijinal halini de korumak istiyorsak aşağıdaki gibi bir atama işlemi gerçekleştiririz.

iris %>% mutate(Sepal.LengthLog = log(Sepal.Length))

R ile Veri Manipülasyonu Hakkında Siz Ne Düşünüyorsunuz?

R ile Veri Manipülasyonu yazımızın sonuna geldik. Eğer beğendiyseniz sosyal medyada paylaşabilir ve görüşlerinizi yorumlarda belirtebilirsiniz.

Teknoloji'den geri kalmamak için e-posta listemize abone olun!

Veriyle çalışmayı seven bir endüstri mühendisi.