R Dersleri - Ali Onur Gitmez

Ana Sayfa Ders 1 Ders 2 Ders 3 Ders 4 Ders 5 Ders 6 Ders 7 Ders 8 Ders 9 Ders 10 Ders 11 Ders 12 Ders 13 Ders 14 Ders 15

R

  • Istatistik icin ozel yaratilmis bir programlama dili
  • Dogrudan R kullanmak yerine R Studio denilen bir arayuz ile kullanacagiz

R Studio

R Studio Kullanimi

R Studio kullanirken dogrudan script acabildigimiz gibi, RProject yaratip onu da kullanabiliriz. Bunun saglayacagi bir yarar dogrudan scriptimizi, kullanacagimiz verileri, sonuc ciktilarini(tablolar, grafikler) saklayabilecegimiz bir dosyanin yaratilmasi ve bu R Project dosyasini paylasarak hepsini bir arada tutabilmemiz.

Ikinci bir yarari ise working directory dedigimiz calisma alanimizi otomatik olarak belirlemesi. Working directory analizi yaparken kullanacagimiz dosyalarin ve ortaya cikan sonuclarin atildigi bir yerdir. Her projenin kendi working directorysi olmasi calismayi kolaylastirir ve veri kaydetmeyi veya veri almayi daha kolay hale getirir.

R kullanirken veri cekmeyi daha sonra ogrenecegiz ama cekecegimiz verinin scripti actigimiz yerle ayni olmasi gerekir, yoksa R dosyayi bulamayacaktir. Bunun onune dosyanin bulundugu yerin tam adini yazarak gecebiliriz ama ayni yerde bulunmasi isleri kolaylastiracaktir.

Working directory verileri cektigimiz ve analizi kaydettigimiz yerin adiydi.

Bunu kontrol etmek icin RStudio kullanabilir veya komut olarak

getwd()
## [1] "/Users/alionurgitmez/Desktop/R Dersi/Hafta 1"

kullanabiliriz.

Eger degistirmek istiyorsak da

setwd("x")

kullanip yeni alan adini belirleyebiliriz.

R Paketleri

R kullanirken en cok isimize yarayacak konulardan birisi de R paketleridir. Bunlari bos isvicre cakisinin ustune yapilan eklemler gibi dusunebiliriz. Normalde belli hesaplari yapmaya yarayen bir programi, oyun teorisi analizi yapan, internetten veri ceken, bir yazida en cok kullanilan kelimeleri gosteren ve bunlardan cok daha fazlasini yapan bir arac haline getiriyor. Base R diye adlandirdigimiz komutlar ile 5 satirda yaptigimiz bir isi bu araclari kullanarak 1 satirda yapabiliriz veya karmasik olan islemleri cok basit 1-2 operator araciligiyla yapabiliriz. Bu ikisinin arasindaki farki ilerleyen zamanda gorecegiz.

R paketleri farkli yerlerde bulunabilir. Bazi paketler CRAN adi verilen ve onaylanmis R paketlerinin bulundugu bir sistemde tutuluyor. Buradan paket yuklemek cok kolay. Tek yapmaniz gereken

install.packages("x")

Bazi paketler ise Github adini verdigimiz sistemde bulunur. Yeni paketler, onaylanmamis paketler veya onaylanmis paketlerin en yeni versiyonlarini buradan alabiliriz. Bunun icin ek paket gerekse bile yine cok basit bir komutla paketi indirebiliriz.

remotes::install_github("x")

R paketlerini indirdikten sonra kullanmak icin de bir komut girmemiz gerekir. Bunu R’i her actigimiz zaman bastan girmemiz gerekiyor. Best practice olarak scriptin basina kullanacaginiz tum paketleri yazarsaniz her acisinizda hizlica yapabilirsiniz. Bunun icinse:

library(x)

Paketleri guncellemek icinse hepsini guncellemek istiyorsak:

update.packages()

Sadece bir paketi guncellemek istiyorsak

install.packages("x")

Naming Convention

Naming conventionlar r objelerine, veri sutunlarina ve dosyalara verecegimiz isimleri kapsar. Naming conventionlarda obje isimlendirmelerini kucuk harflerle ve kelimeleri _ ile ayirarak yapariz. Dosyalar icinse yine kucuk harf ve kelimelerin - ile birbirinden ayrildigi bir convention uygulanir.

Temel R Komutlari

R’da temel olarak kullancagimiz komutlar = veya <- komutlaridir. Bunlar herhangi bir bilgiyi daha sonra kullanmak uzere bir degiskene atama isine yarar. Her ikisi de ayni gorevi gorse bile <- isareti yillar icinde R kullanicilari arasinda konvansiyon haline gelmistir. Ondan dolayi = yerine <- kullanmaya alismamiz gerekir. Ancak eski R dokumanlarini incelerseniz = ibaresini de gorebilirsiniz.

yenisayi <- 51
yenisayi2 = 51
51 -> yenisayi3

Bu isareti yapmanin kolay bir yolu Mac uygulamasi olarak Keysmith indirmek ve orada bir atama yapmak. Boylece klavyede cok kullanmadigimiz tuslar yerine bunu atayarak islemlerimizi hizlica yapabiliriz.

ANCAK bir sayiya degisken atamasi yapamayiz. Bunun sebebi ise R icin o sayinin bir anklami olmasi. Ayni sekilde R dilinde programlama sirasinda kullanilan terimlere de degisken atamasi yapamayiz. Ayni zamanda belli kelimelere de degisken adi atamasi yapilamaz. Bu kelimeleri gormek icin:

print(help(reserved))

R ile calismak icin baslangic olarak script kismini kullanacagiz Ilerleyen donemlerde ise bu sunumu hazirladigim ve dokuman hazirlama konusunda da ise yarayan Markdown adi verilen programi kullanabiliriz. Ancak iyi bir yontem basta script ustunde calisip sonra o dokumana gecmek olacagi icin script bizim temel isimiz olacak.

Script ustunde calisirken burada yaptigim gibi duz yazi yazmamiz mumkun degil. Eger bu sekilde yaziyorsak R onun bir komut oldugunu dusunup calistirmak istyecektir ve dogal olarak basarili olamayacak. Bunun icin commenting dedigimiz bir islem var. Her satirin basina # getirerek o satira istedigimizi yazabiliriz. Bunun kullanilma sebebi kodun ne ise yaradigini ve amacini hem kendimize hem de okuyan ucuncu kisilere anlatmak. Aylar sonra dondugumuz bir projede ne yapmaya calistigimizi hatirmak zor olacagindan bu yorumlari ekleyerek kodu calistirmamiz mumkun.

R scriptini calistirmanin iki farkli yolu var. Ilki tum scripti bastan calistirmak. Bu tamamladigimiz dokumanlari sonradan actigimiz zaman tercih edecegimiz bir yol. Ikinci yontem ise parca parca calistirmak. Bu en cok kullanacagimiz yontem olacak. Kodumuzu script kismina girdigimiz icin, console kismina kopyalamaya gerek kalmadan satir satir veya parca parca calistirmamiza imkan veriyor.

R Veri Tipleri

R’da temel olarak 5 veri tipi vardir. Bunlarin genel adi atomik vektorlerdir. Genel olarak 3 tanesini kullaniriz.

  1. Numeric data: Sayi verisi girdigimiz zaman numeric olarak atanir. Sayilarla islem yapmak icin verinin bu tipte olmasi gerekir.
sayi <- 73
class(sayi)
[1] "numeric"

Bu veri tipinin iki alt grubu vardir:

  • Double: Hem tam sayilari hem de noktali sayilari tanimlamak icin kullanilan bir grup. Eger bir sayi atamasi yaparsak default olarak bu gruba atanacaktir.
tamsayi <- 42
noktalisayi <- 42.5
class(tamsayi)
[1] "numeric"
typeof(tamsayi)
[1] "double"
typeof(noktalisayi)
[1] "double"
  • Integer: Tam sayilari tanimlamak icin kullanilir. Double ile temel farki daha az yer kaplamasidir. Kucuk boyutlu islemlerde onemli bir fark yaratmasa bile devasa verisetlerini goz onunde aldigimiz zaman, buyuk capli hesaplamalarda etkili olur. Bizim kullanacagimiz verilerde ciddi bir fark yaratmayacagi icin double olarak kaydetmemiz acisindan bir sikinti yok.
gercektamsayi <- 42L
class(gercektamsayi)
[1] "integer"
typeof(gercektamsayi)
[1] "integer"
  1. Character: Veri olarak text girisi yapacagimiz zaman kullanilan veri tipidir. Kullanimi icin yaziyi ’ ’ veya ” ” icine almak gerekir. Almadigimiz durumda R error verecektir.
ilkyazi <- "Bilgisayar"
ikinciyazi <- "R dersi"
ilkyazi
[1] "Bilgisayar"
ikinciyazi
[1] "R dersi"
class(ilkyazi)
[1] "character"
typeof(ikinciyazi)
[1] "character"
  1. Logical: Deger olarak TRUE ve FALSE alan bir veri tipi. Bu iki terim R icin bir anlam ifade ettiginden dolayi tirnak isareti icine almamiza gerek yok. Bu veri tipinin onemi en basta acikca belli olmayabilir ama ilerleyen zamanlarda fonksiyonlar yazarken bu mantigi cok kullanacagiz.
logical1 <- TRUE
logical2 <- FALSE
logicalsonuc <- logical1 & logical2
logicalsonuc
[1] FALSE
logicalsayi <- 10
5 > logicalsayi
[1] FALSE
  1. Complex: Hayali ve kompleks sayilari belirtmek icin kullanilir. Muhendislik ve matematik alanlarinda uygulamasi olsa bile bizim odaklanacagimiz alanda az kullanilir veya hic kullanilmaz.
complexsayi <- 4 + 2i 
class(complexsayi)
[1] "complex"
typeof(complexsayi)
[1] "complex"
  1. Raw: Son olaraksa raw denen ve cok az kullanilan bir veri tipi vardir. Sayilari ve karakterleri bu sekilde store etmek mumkun. Kullanimi yaygin olmadigi icin ogrenmeyecegiz.

R Operatorleri

R, islem onceligini de dikkate alarak hesap yapmaya yarar. 4 temel islemi yapabiliriz.

3+1
[1] 4
4/2
[1] 2
8 + 3*4
[1] 20
2 * (7-4)
[1] 6

Yapabilecegimiz islemler elbet bunlarla sinirli degil. Ornek olarak aritmetik islemlerlde:

Sayinin ussunu almak icin

2^3
[1] 8

Bolumden kalani bulmak icin

7%%4
[1] 3

Bolme sonucunun tam sayi kismini almak icin

9%/%2
[1] 4

Karekok almak icin

sqrt(144)
[1] 12

Ayni zamanda logical kismindaki ornekte gordugumuz uzere mantik operasyonlari da yapabilir.

logicalsonuc2 <- logical1 | logical2
logicalsonuc3 <- logical1 == logical2
logicalsonuc4 <- logical1 != logical2
logicalsonuc5 <- logical1 & logical2
logicalsonuc2
[1] TRUE
logicalsonuc3
[1] FALSE
logicalsonuc4
[1] TRUE
logicalsonuc5
[1] FALSE

Burada dikkatimizi cekmesi gereken onemli bir durum var. Esitlik saglamasi yaparken iki tane = koydum. Bunun sebebiyse programlama dillerinde = isaretinin degisken atama isine yaramasi ve iki obje arasindaki esitlige bakacaksam atama yapmayacagim icin iki tane = kullanmak gerekiyor.

Karsilastirma yaparken de R operatorlerini kullanabiliriz

5 > 3
[1] TRUE
4 < 2
[1] FALSE
6 >= 5
[1] TRUE
4 <= 5
[1] TRUE

R’da degiskenleri kullanarak sayilar olmadan da hesaplama islemi yapabiliriz.

elma <- 5
portakal <- 6
toplam_meyve <- elma + portakal
toplam_meyve
[1] 11

Son olaraksa : kullanarak sayi serileri olusturmamiz mumkundur

sayilar <- 1:10

Bunun disinda ogrenecegimiz %in% gibi operatorler de var ancak onlar farkli veri yapilarini ogrendigimiz zaman ise yarayacak.

set.seed() komutu R ile sayilar olusturuyorsak, reproducibility acisindan cok onemlidir. Bu komutu kullanarak yaptigimiz islemlerde hep ayni sayilarin gelecegini garanti ederiz. Boylece random sayilar olusturarak yapacagimiz bir analizin baskasi tarafindan da ayni sekilde gerceklestirilecegi garanti olur.

Ornek olarak:

random_numbers_1 <- sample(1:100, 10)
random_numbers_2 <- sample(1:100, 10)
random_numbers_1
 [1] 52 63 79 90 98 57 30 28 15 99
random_numbers_2
 [1]  6 39 18 27  9 17 89 69 12  2
set.seed(2024)
random_numbers_3 <- sample(1:100, 10)
set.seed(2024)
random_numbers_4 <- sample(1:100, 10)
random_numbers_3
 [1] 66 37 45 60 17 32 29 11 16 94
random_numbers_4
 [1] 66 37 45 60 17 32 29 11 16 94

Karakterler ile islem

Bu islem ne sonuc verir?

elma <- "elma"
armut <- "armut"
meyve <- elma + armut

SON