configR paketi ile R’da konfigürasyon dosyaları yazmak, okumak


Şöyle bir config dosyamız olsun, iki parametremiz var:

[max_allowed_error]
=10

[a]
=10

Bu dosyayı R’da okumak için şöyle yaparız:

library(configr)
#
config <- read.config(file="config.ini")
print(config$max_allowed_error)

Gördüğünüz gibi direkt olarak parametrlerimizi alanımıza çağırdık. Şimdi parametreleri değiştirip config.ini dosyamıza bir daha yazdıralım:

yazilacak_veriler <- list(max_allowed_error =200,a=10)
write.config(yazilacak_veriler,file="config.ini")

Bu durumda config.ini dosyamızı açınca değerlerimiz 200 ve 10 olarak görülecektir.

Bu configR paketi bizi dosya aç, oku gibi işlemler yerine config.ini dosyalarından kolayca okuma yazma yapmamızı sağlar.

INI formatı yerine YAML formatı

Daha pratik olan yaml formatını da kullanabilirsiniz

library(configr)
config <- read.config(file="config.ini",file.type = "yaml")
print(config)

yazilacak_veriler <- list(max_allowed_error =200,starting_id=10)
write.config(yazilacak_veriler,file="config.ini",write.type = "yaml")

Sadece Tek Değişkeni Değiştirikten Sonra Dosyaya Yazmak

Yukarıda her write işleminde tüm değişkenleri yeniden yazmamız gerekirdi, ama aşağıdaki gibi liste parametresini yukarıda tanımlayarak tekli parametre güncellemesinden sonra bunu konfigürasyon dosyasına yazdırabiliriz.

library(configr)

yazilacak_veriler <- list(a=10,b=20)

#ilk yazma
write.config(yazilacak_veriler,file="deneme.yaml",write.type = "yaml",)

config <- read.config(file="deneme.yaml",file.type = "yaml")
print(config)

#sadece tek değişkeni editleme
yazilacak_veriler[['a']] = 10000
write.config(yazilacak_veriler,file="deneme.yaml",write.type = "yaml",)

Market Sepeti Analizi Nedir?


market card ile ilgili görsel sonucu"

Bir markette herkes sepetine farklı ürünler doldurur. Ancak her sepette genellikle bir arada bulunan ürünler vardır. Bu ürünlerden örneğin kola ile cipsin bir arada alınması beklenebilir ancak beklenmediği halde bir arada olan ürünler olabilir mi? Örneğin bira ile çocuk bezi bir arada sıkça görülür mü? Bir şehir efsanesine göre evet. İşte buna benzer kalıpları görebilmek için “market sepeti analizi” adı verilen bir analiz yapılır. Bu bir veri madenciliği yöntemidir.Bunu R ile yapmak için şurayıPython ile yapmak için şurayı okuyabilirsiniz.

R ve Regex Yardımıyla düzensiz bir metin içinden yılı yakalamak


Bir projemde aşağıdaki gibi iki tür metin vardı:

> a="Volume 29, Issue 3, July 2007, Pages 357-374"
> b="Published: 1999, Start page: 117"

a ve b değerleri içinden 2007 ve 1999 gibi sayıları çıkarmak istiyordum. Regex’te buna uygun bir patternin var olduğunu düşündüm. Şuradan test ettim: https://www.regextester.com/93651

Daha sonra R’da bulunan stringr paketindeki str_extract fonksiyonunu kullandım:

> str_extract(a,"(19|20)\\d{2}")
[1] "2007"
> str_extract(b,"(19|20)\\d{2}")
[1] "1999"

Özetle (19|20)\d{2} şeklinde yazdığım regex kodu şöyle söyler: Git o metnin içinden 19 veya 20 ile başlayan ve devamında iki sayısal karakter(d) olan veriyi yani yılı getir.

Getirdi de! Büyük veri zorlu veridir. Ama aşmak için her zaman yollar vardır.

Bulk replacing Turkish characters in R


Turkish character sometimes became the menace for the data scientist. To avoid the risks you may want to change it with safe characters. To do that you can use this code:

#turkce karakter donusumu
to.plain <- function(s) {

# 1 character substitutions
old1 <- “çğşıüöÇĞŞİÖÜ”
new1 <- “cgsiuocgsiou”
s1 <- chartr(old1, new1, s)

# 2 character substitutions
old2 <- c(“œ”, “ß”, “æ”, “ø”)
new2 <- c(“oe”, “ss”, “ae”, “oe”)
s2 <- s1
for(i in seq_along(old2)) s2 <- gsub(old2[i], new2[i], s2, fixed = TRUE)

s2
}
df$source=as.vector(sapply(df$source,to.plain))

R’da tüm korelasyonları toplu göstermek


Verisetiniz içerisinde kaç parametre varsa bunların birbirleri ile ilişkisi için teker teker korelasyonlara bakmanıza gerek yok. R’da bu işlemi topluca yaparak zaman kazanabilirsiniz.

Veri Amerika’nın Wyoming eyaletindeki suç verileri (2013)

  library(xlsx)
  a=xlsx::read.xlsx("wyoming.xls",sheetName = "13tbl8wy"
                    ,as.data.frame = T
                    ,stringAsFactors=F)
  #NA konları sil
  a=a[colSums(!is.na(a)) > 0]
  #correlation pairs
  panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...)
  {
    usr <- par("usr"); on.exit(par(usr))
    par(usr = c(0, 1, 0, 1))
    r <- abs(cor(x, y))
    txt <- format(c(r, 0.123456789), digits = digits)[1]
    txt <- paste0(prefix, txt)
    if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
    text(0.5, 0.5, txt, cex = cex.cor * r)
  }
  pairs(a[1:5], lower.panel = panel.smooth, upper.panel = panel.cor)

#corelation pairs fonksiyonundan sonraki kısımla aşağıdaki gibi koralasyon tablosu elde edebiliyorsunuz.

Gördüğünüz üzere hem korelasyonlar hem grafikler kolayca eşleştirilebiliyor. Bu grafikten ne anlıyoruz. Wyoming için 2013 yılında şehir bazında nüfus ile işlenen şiddet içeren suçlar arasında ciddi ilişki var. O zaman küçük yerler daha güvenli olabilir. Ama kumarbaz yanılgısına düşmeyin. Küçük ihtimaller gelip sizi bulabilir.