R’da başta shiny olmak üzere flexboard ve crosstalk paketleri dinamik tablo oluşturmada kullanılan paketlerden bazılarıdır. Bu çalışmada ise crosstalk paketi kullanılarak adım adım özgün bir uygulama üzerinde gösterilecektir. Uygulamada R kod bloklarını R Studio arayüzünde yazdım.
Çalışmada kullanılan veri seti TÜİK veri tabanından alınan 15 yaş üstü nüfusun yıllara ve illere göre dağılımını içermektedir. 15 yaş üstü nüfus, Adrese Dayalı Kayıt Sistemi (ADKS)’ne göre elde edilen verilerden oluşmakta olup, 2008-2019 dönemlerini kapsamaktadır.
Kısaca örnek uygulamada kullanılacak veri seti hakkında bilgi verdikten sonra R adım adım uygulamaya geçebiliriz. Öncelikle uygulamada kullanmak üzere oluşturduğum veri seti xlsx uzantılı olarak aşağıda verilmiştir.
Gerekli kütüphanelerin yüklenmesi
Aşağıda uygulamada ihtiyacınız olacak kütüphanelerden fazlasını verdim. Bunun nedeni bundan sonra da yapacağınız çalışmalarda sizlere fayda sağlayacak olmasıdır.
kütüphaneler<-c("reactable","crosstalk","dplyr","tibble","tidyr","ggplot2","formattable","ggthemes","readr","readxl","ggpubr","formattable", "ggstance")
yükle<-sapply(kütüphaneler, require, character.only = TRUE)
yükle
Yukarıdaki R kod bloğu çalıştırıldıktan sonra kütüphanelerin yüklenme durumu gösteren aşağıdaki mantıksal operatörleri elde ederiz. Yani ilgili kütüphane yüklenmişse TRUE, yüklenmemişse FALSE sonucu göreceksiniz. Sonuçların tamamı TRUE geldiğine göre bütün kütüphaneleri yüklemiş olduk.
Eğer sonuç FALSE gelirse bu durum sizin daha önce bu paketleri kurmadığını göstermektedir. Onun için kolaylık sağlaması adına aşağıdaki R kod bloğunda yazılan kodu çalıştırarak bütün paketleri veya ilgili paketleri aynı anda kurabilirsiniz.
paketler<-c("reactable","crosstalk","dplyr","tibble","tidyr","ggplot2","formattable","ggthemes","readr","readxl","ggpubr","formattable", "ggstance")
install.packages(paketler)
Veri setinin R ortamına yüklenmesi ve analize uygun hale getirilmesi
Burada ilk olarak veri seti okunmuş ardından tibble tablo düzenine alınmıştır. Ardından veri setindeki format geniş düzende olduğu için pivot_longer() fonksiyonu ile uzun formata dönüştürülmüştür. Yani önceki düzen (geniş format)’de “Toplam”, “Kadın” ve “Erkek” değişkenlerinin olduğu sütunlar yeni düzen (uzun format)’de Cinsiyet değişkeni altında toplanmıştır. Önceki düzendeki değişkenlerin değerleri ise Nüfus değişkeni altında toplanmıştır.
df<-read_excel("nufus.xlsx") %>% as_tibble() %>% pivot_longer(
cols = Toplam:Kadın,
names_to = "Cinsiyet",
values_to = "Nüfus"
) %>% mutate(Nüfus=format(Nüfus, big.mark=".", decimal.mark=","))#Nüfus değişkeni burada karakter formatında yani nominal olarak alınmıştır.
df
İlk 10 kaydın tablo formatında gösterilmesi
#ilk 10 kaydın tablo formatında gösterilmesi
df %>% head(10) %>% formattable()
Yukarıdaki R kod bloğunun çalıştırılmasından sonra veri setindeki ilk 10 gözlem tablo formatında aşağıda verilmiştir.
Veri setindeki değişkenlerin veri tipinin ve gözlem sayısının kontrol edilmesi
glimpse(df)
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen sonuçlar aşağıda verilmiş olup, veri setinin 4 değişkenden ve 2916 gözlemden oluştuğu görülmektedir.
Observations: 2,916
Variables: 4
$ Yıl <dbl> 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 20...
$ İl <chr> "Adana", "Adana", "Adana", "Adıyaman", "Adıyaman", "Adıy...
$ Cinsiyet <chr> "Toplam", "Erkek", "Kadın", "Toplam", "Erkek", "Kadın", ...
$ Nüfus <chr> " 1.667.391", " 825.056", " 842.335", " 443.356", ...
Dinamik Tablo Oluşturma
Aşağıdaki R kod bloğunda filter_checkbox() fonksiyonu ile cinsiyet seçeneklerinin olduğu check list oluşturulmuştur. filter_select () fonksiyonu ile içerisinde illerin olduğu liste oluşturulmuştur. filter_slider() fonksiyonu ile ise yılların alt ve üst limitinin olduğu bir band oluşturulmuştur. reactable () fonksiyonu ile yukarıda oluşturulan fonksiyonlara duyarlı, filtreleme yapılabilen ve sayfadaki gözlem sayısının 20 olduğu bir tablo oluşturulmuştur.
n<-SharedData$new(df)
bscols(widths = c(3, 9),
list(
filter_checkbox("cinsiyet", "Cinsiyet", n, ~Cinsiyet, inline = F),
filter_select("il", "İli Seçiniz", n, ~İl, multiple = TRUE),
filter_slider("yil", "Yılı Seçiniz", n, ~Yıl, width = "100%")),
reactable(n, filterable = TRUE, defaultPageSize = 20)
)
Yukarıdaki R kod bloğunu çalıştırılmasından sonra elde edilen görüntü png formatında aşağıda verilmiştir.
Yapılan bu çalışmayı RPubs üzerinde yayınlayabileceğiniz gibi localhost olarak da görüntüleyebilir ve ayrıca web sayfası olarak kaydedebilirsiniz.
RPubs üzerinde yayınladığım bu çalışmanın linkine aşağıdan ulaşabilirsiniz.
https://rpubs.com/tevfik1461/dinamiktablo
Eğer yapılan çalışmayı paylaşmak istemiyorsanız ve daha sonra kullanmak üzere web sayfası olarak kaydetmek isterseniz R’da aşağıda ekran görüntüsünü verdiğim yerden bu işlemi yapabilirsiniz. Bu çalışmayı web sayfası olarak da kaydettim ancak sitem html dosya yüklenmesini desteklemediği için yüklemedim.
Yapılan bu çalışmanın özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına önemli bir katkı sunacağı düşünülmektedir.
Faydalı olması ve farkındalık oluşturması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Saygılarımla.
Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
Note: It can not be cited or copied without referencing.
Yararlanılan Kaynaklar
- http://www.tuik.gov.tr/PreTablo.do?alt_id=1059
- https://www.r-project.org/
- https://rstudio.cloud/
- https://rpubs.com/tevfik1461/dinamiktablo
- https://cran.r-project.org/web/packages/crosstalk/index.html