%>%
linelist group_by(hospital) %>% # satırları hastane (hospital) olarak gruplandır
slice_max(date, n = 1, with_ties = F) # eğer tarih (date) ile eşleşirse ilk satırı al
1 Önyazı ve teknik notlar
Bu sayfada, el kitabının hazırlanması sırasında belirlediğimiz felsefi yaklaşıma, stile ve belirli editoryal kararlara değineceğiz.
1.1 Yaklaşım ve stil
Bu kitabın potansiyel hedef kitlesinin geniş olmasını istedik. Hem R’a yeni olan kişiler tarafından hem de “R’ın iyi uygulamalarını” ve “R’ın ipuçlarını” öğrenmek isteyen deneyimli kullanıcıların bu kitaptan faydalanabilmesini istedik. Kitap hem kolayca erişilebilir hem de az ve öz olmalıydı. Bu nedenle yaklaşımımızı, R’de çok yeni olan birinin kodu uygulayabileceği ve kodun ne yaptığını takip edebileceği yeterli metin açıklamasını sağlamak olarak belirledik.
Bir kaç nokta daha:
- Nispeten kısa örneklerin eşlik ettiği bir kod referans kitabı olarak tasarlanmıştır - R , veri bilimi üzerine kapsamlı bir ders kitabı değildir.
- Uygulamalı epidemiyolojide kullanmanız için R el kitabı olarak kapsamı sınırlandırılmıştır - uygulamalı epidemiyoloji yöntemleri veya bilimi hakkında bir kılavuz değil.
- Bu el kitabının yaşayan bir belge olması amaçlanmıştır - belirli görevler için hazırlanan R paketleri sıklıkla güncellenir ve değişir. Bu kitapta hangilerine yer vermemiz gerektiğine dair öneri ve eleştirilerinizi memnuniyetle öğrenmek isteriz.
R paketleri
Çok fazla seçenek
R öğrenmenin en zorlu yönlerinden biri de hangi R paketinin kullanılacağını bilmektir. Bir işi çözmeye çalışırken “Hey, bunların hepsini tek bir komut satırında yapan bir R paketi var!” demeniz nadir bir durum olmayacaktır.
Bu el kitabında, her görevi tamamlamanız için size en az iki yol sunmaya çalıştık: ilki denenmiş ve doğrulanmış bir yöntem (muhtemelen base R veya tidyverse içinde) ve ikincisi o iş için özel olarak tasarlanmış bir R paketi. Belirli bir pakette sorun yaşamanız halinde birden fazla seçeneğe sahip olmanızı istiyoruz.
Paketleri belirlerken, R topluluğu tarafından test edilmiş ve onaylanmış paketlere ve yaklaşımlara öncelik verdik. Rutin bir çalışma oturumunda işinize yarayacak, stabil (çok sık değişmeyen) ve görevi basit ve temiz bir şekilde yerine getirebilecek minimal sayıda paket kullandık.
Bu el kitabı tidyverse’de bulunan R paket ve işlevlerine öncelik verir. Tidyverse, temel dilbilgisi ve veri yapılarını paylaşan veri bilimi için tasarlanmış bir R paketi koleksiyonudur. Tüm tidyverse paketleri, tidyverse paketi aracılığıyla kurulabilir veya yüklenebilir. Tidyverse’n web sitesinde daha fazlasını okuyabilirsiniz.
Uygun yerlerde, kurulum sırasında R ile birlikte yüklenen base paket ve fonksiyonlarıyla ilişkili kod seçeneklerini de ekledik. Bunu, bu kitabın okuyucularından bazılarının ekstra paketleri indirmek için güvenilir bir internete sahip ol(a)mama ihtimaline karşılık yaptık.
Fonksiyonları paketlerle ilişkilendirme
R eğitim ve rehberlerinde bir fonksiyona ilişkin kodun anlatılıp, kullanılan paketin hiç değinilmemesine şahit olmuşsunuzdur. Bu durum sinir bozucudur! İşte biz bunu size yaşatmaktan kaçınmaya çalıştık.
Açıklama metinlerinde paket adları kalın harflerle (örn. dplyr) ve fonksiyonları mutate()
şeklinde yazılır. Bir fonksiyonun hangi paketten geldiğini, ya en yakındaki metinde referanslayarak ya da kodu dplyr::mutate()
şeklinde yazarak size açıklamaya çalıştık. Başta gereksiz görünebilir ancak bunu yukarıda bahsettiğimiz amaç doğrultusunda, bilerek yapıyoruz.
Paketler ve fonksiyonları hakkında daha fazla bilgi edinmek için R basics sayfasına bakabilirsiniz.
Kodlama stili
El kitabında sık sık “yeni satırlar” kullanıyoruz, bu da kodumuzun “uzun” görünmesine neden olabiliyor. Bunun birkaç sebebi var:
- Kodun her küçük parçasına bitişik
#
ile açıklayıcı yorumlar yazabiliriz. - Genellikle daha uzun (dikey) kodun okunması daha kolaydır.
- Kodların dar bir ekranda okunması daha kolaydır (ekranı yana kaydırmanıza gerek kalmaz).
- Girintiler sayesinde hangi argümanların hangi fonksiyona ait olduğunu daha kolay anlayabilirsiniz.
Sonuç olarak, aşağıdaki gibi yazılabilecek kod:
…şu şekilde yazılır:
%>%
linelist group_by(hospital) %>% # satırları hastane (hospital) olarak gruplandır
slice_max(
# maksimum tarih değerine grubu sırala
date, n = 1, # gruptaki satırlardan sadece ilkini al
with_ties = F) # eğer tarih (date) ile eşleşirse ilk satırı al
R kodu genel olarak yeni satır veya girintilerden etkilenmez. Kodu yazarken, virgülden sonra yeni bir satır başlatırsanız, program yeni satıra otomatik girinti uygular.
Ayrıca, okunması daha kolay olduğu için kodu yazarken birçok boşluk kullandık (örneğin, ‘n=1’ yerine ‘n = 1’). Siz de kodunuzu yazarken onu okuyabilecek insanları düşünerek yazmalısınız!
Terminoloji
Bu el kitabında, genellikle “değişkenler” ve “gözlemler” yerine “sütunlar” ve “satırlar”a atıfta bulunuyoruz. “Tidy verileri” ile ilgili bu makalede açıklandığı gibi, epidemiyolojik istatistiksel veri setlerinin çoğu yapısal olarak satır, sütun ve değerlerden oluşur.
Değişkenler aynı temel özelliği ölçen değerleri içerir (yaş grubu, çıktı veya başlangıç tarihi gibi). Gözlemler aynı birimde ölçülen tüm değerleri içerir (örneğin bir kişi, alan veya laboratuvar numunesi vb.). Dolayısıyla bu yönleri somut olarak tanımlamak daha zor olabilmektedir.
“Tidy” veri kümelerinde her sütun bir değişken, her satır bir gözlem ve her hücre de tek bir değeri ifade etmektedir. Ancak karşılaştığınız bazı veri kümeleri bu kalıba sığmaz - “geniş” biçimli bir veri kümesinin birkaç sütuna bölünebilen değişkenleri olabilir (Pivoting data sayfasındaki bir örneğe bakın). Benzer şekilde, gözlemler de birkaç satıra bölünebilir.
Bu el kitabı çoğunlukla, verileri yönetmek ve işlemek üzerine odaklanmıştır. O nedenle satır ve sütunlarda somut verilere atıfta bulunmayı, daha soyut olan “gözlem” ve “değişkenler”e tercih ettik. Bu yaklaşımımızın istisnası, daha fazla değişken ve gözlem referansıyla karşılaşacağınız veri analizi sayfalarıdır.
Notlar
El kitabında karşılaşabileceğiniz not türleri şunlardır:
NOT: Bu bir nottur.
İPUCU: Bu bir ipucudur.
DİKKAT: Bu dikkatli yaklaşmanızı tavsiye eden bir nottur.
TEHLİKE: Bu bir uyarıdır.
1.2 Editöryal Kararlar
Aşağıda, paket ve işlev seçimiyle ilgili önemli editoryal kararları sizinle paylaşıyoruz. Bizimle aynı fikirde değilseniz veya değerlendirilmesi için yeni bir araç önermek isterseniz, lütfen Github sayfamıza katılın ve yeni bir sohbet başlatın.
Paket, fonksiyon ve diğer editoryal kararlar tablosu
Konu | Paket | Çıktı | Rasyoneli |
---|---|---|---|
Genel kodlama yaklaşımı | tidyverse, data.table, base | tidyverse, data.table üzerinde bir sayfa ve interneti olmayan okuyucular için base alternatifleri | tidyverse okunabilir, evrensel, en çok öğretilen pakettir. |
Paket yükleme | library() ,install.packages() , require() , pacman |
pacman | Çoklu paket indirme/yükleme süreçlerini kısaltır ve basitleştirir. |
İçe ve dışa aktarma | rio, ve diğer pek çok paketler | rio | birçok dosya türü için kolaylık sağlar. |
İstatistik özetleri için gruplandırma | dplyr group_by() , stats aggregate() |
dplyr group_by() |
tidyverse vurgusu ile tutarlıdır. |
Pivotlama | tidyr (pivot fonksiyonları), reshape2 (melt/cast), tidyr (spread/gather) | tidyr (pivot fonksiyonları) | reshape2 artık kullanımda değil, tidyr v1.0.0 itibariyle pivot fonksiyonlarını kullanmaktadır. |
Sütun adlarını temizleme | linelist, janitor | janitor | Paketlerin birlikte kullanımı vurgulanmaktadır. |
Epiweeks | lubridate, aweek, tsibble, zoo | genelde lubridate, özel durumlarda diğer paketler | lubridate esnek, tutarlı ve diğer paketleri koruyan bir seçenektir. |
ggplot etiketleri | labs() , ggtitle() /ylab() /xlab() |
labs() |
tüm etiketler tek bir yerde, kullanımı basittir. |
Faktöre çevir | factor() , forcats |
forcats | çeşitli fonksiyonları da aynı komutta faktöre dönüşür. |
Epidemi eğrileri | incidence, ggplot2, EpiCurve | incidence2 hızlıdır, ggplot2 ise detaylı ve güvenilirdir. | |
Birleştirme | paste() , paste0() , str_glue() , glue() |
str_glue() |
stringr fonksiyonlarını içerir; yapıştır fonksiyonlarından daha basit bir sentaks (sözdizimi) vardır. |
1.3 Büyük güncellemeler
Tarih | Açıklama |
---|---|
10 May 2021 | Versiyon 1.0.0’ın yayınlanması |
1.4 Oturum bilgisi (R, RStudio, packages)
Aşağıda, bu el Kitabının hazırlanması sırasında kullanılan R, RStudio, R paketleri ve sürümlerine ilişkin bilgiler yer almaktadır.
::session_info() sessioninfo
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.3.2 (2023-10-31 ucrt)
os Windows 11 x64 (build 22621)
system x86_64, mingw32
ui RTerm
language (EN)
collate English_United States.utf8
ctype English_United States.utf8
tz Europe/Stockholm
date 2024-06-19
pandoc 3.1.11 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
cli 3.6.2 2023-12-11 [2] CRAN (R 4.3.2)
digest 0.6.35 2024-03-11 [1] CRAN (R 4.3.3)
evaluate 0.23 2023-11-01 [2] CRAN (R 4.3.2)
fastmap 1.1.1 2023-02-24 [2] CRAN (R 4.3.2)
htmltools 0.5.8 2024-03-25 [1] CRAN (R 4.3.3)
htmlwidgets 1.6.4 2023-12-06 [2] CRAN (R 4.3.2)
jsonlite 1.8.8 2023-12-04 [2] CRAN (R 4.3.2)
knitr 1.45 2023-10-30 [2] CRAN (R 4.3.2)
rlang 1.1.3 2024-01-10 [2] CRAN (R 4.3.2)
rmarkdown 2.26 2024-03-05 [1] CRAN (R 4.3.3)
rstudioapi 0.15.0 2023-07-07 [2] CRAN (R 4.3.2)
sessioninfo 1.2.2 2021-12-06 [2] CRAN (R 4.3.2)
xfun 0.43 2024-03-25 [1] CRAN (R 4.3.3)
[1] C:/Users/ngulu864/AppData/Local/R/win-library/4.3
[2] C:/Program Files/R/R-4.3.2/library
──────────────────────────────────────────────────────────────────────────────