Evet, dataFLOYD
olarak R programlama dilini de ihmal etmek istemiyoruz. Bu yazımızla bir başlangıç verelim gerisi gelir herhalde :) Lafı uzatmadan hemen konumuza başlayalım
# hemen başlıyoruz koda :)
# şaka şaka resmi html içine gömmek için yapıyoruz bunu
library("IRdisplay")
display_png(file="r_basicslogo.png")
Başlamadan önce bilgisayarınıza ilk kez R kuracaksanız aşağıdaki yöntemleri kullanabilirsiniz.
R
kullanımı¶Öncelikle aşağıdaki bağlantıdan işletim sisteminize uygun olan R
paketini indirin ve bilgisayarınıza kurulumu gerçekleştirin.
Rstudio Desktop programını indirin. "Open Source License" versiyonunu kullanın. Bilgisayarınıza kurulum yapın
RStudio programını kullanarak R
alemlerine akabilirsiniz artık tebrikler!
Bilgisayarınızda Anaconda yoksa ilk önce bunu kurmalısınız. Python 3.x versiyonunu tercih etmenizi tavsiye ederim.
Anaconda kurulumu sonrası "Anaconda Prompt" uygulamasını açınız ve aşağıdaki komutu yazarak R
için yeni bir ortam oluşturun
conda create -n mro_env r-essentials mro-base
Komut sonrası kurulum biraz vakit alabilir sabırlı olun:)
Herşey tamamlanınca yine "Anaconda Prompt" uygulamasında oluşturduğumuz ortama geçiş yapın.
conda activate mro_env
Sonrasında yine "Anaconda Prompt"ta aşağıdaki komutu giriyoruz ve "browser"da "Jupyter" açılıyor
jupyter notebook
Burada "New" kısmına basın, R
seçin ve artık hazırsınız!
Temel operasyonlar her dilde hemen hemen aynıdır. 4 işleme bakalım
R dilinde "comment" ekleme # ile yapılır
# Toplama
42 + 42
# Çıkarma
42-12
# Çarpma
2 * 2
# Bölme
12 / 5
# Üs alma
5^3
# Mod alma
13 %% 3
Değişken tanımlanırken aşağıdaki kurallara dikkat edilir
.
, _
bulunabilir.elma
, armut20
, benim.degiskenim
, bu_da_olur
, Büyük.Harf
.
le başlamalı. Eğer .
ile başlarsa bunun ardından bir rakam gelemez.degisken
, r2d2
reserved
kelimeler değişken ismi olarak kullanılamazTRUE
, NULL
, NaN
değişken olarak kullanılamazŞimdi bu R dilinde bir değişkene değer atama (assignment) dediğimiz olay biraz değişiktir. Python gibi bir dil kullanıyorsanız genellikle değişkene değer atamak için =
kullanılır biliyorsunuz.
Ama R
dilinde genel kabul edilen kullanım <-
şeklindedir. =
operatörü de çalışır, fakat R
kullanıyorsanız <-
kullanın lütfen, daha havalı olur :)
a <- 3*3
a
# = operatörü de çalışır ama bunu kullanmayı tavsiye etmem
a = 3*3
a
a <- 3
b <- 2
c <- a +b
c
ilk_str <- "Merhaba dünya!"
ilk_str
asd <- TRUE
qwe <- FALSE
asd
qwe
Bu amaçla class
fonksiyonu kullanılır.
x <- 3.14
class(x)
y <- "pi"
class(y)
z <- FALSE
class(z)
R
kullanacaksanız vektörleri mutlaka bilmeniz gerekir. c()
fonksiyonu kullanılarak vektör oluşturulur. Vektörler sayı olabileceği gibi başka tiplerden de oluşabilirler
# Nümerik
a <- c(1,2,3)
a
# string
b <- c("bir","iki","üç")
b
names()
fonksiyonu kullanılarak bu işlem gerçekleştirilebilir.
a <- c(10,20,30)
isimler <- c("Elma","Armut","Portakal")
names(a) <- isimler
a
# İsimlemdirilmiş alanlara erişim
a["Elma"]
İşlemler eleman bazında yapılmaktadır.
İki vektörü eleman bazında toplamak, çarpmak, çıkarmak vb..
a <- c(10,20,30)
b <- c(1,2,3)
a+b
a*b
a^b
# Boyutlar tutmazsa hata (error) vermez
# kısa olan vektörü ilk elemanından başlayarak
# diğerinin boyutuna yetişecek şekilde tamamlar
a <- c(10,20,30)
b <- c(1,2,3,4)
a+b
Bir vektörün elemanlarının toplamı ve ortalaması
Toplama için sum()
ve ortalama için mean()
fonksiyonları kullanılır.
a <- c(1,1,2,3,5,8)
sum(a)
mean(a)
İki vektörü karşılaştırma
a <- c(1,1,2,3,5,8)
b <- c(3,3,3,0,0,0)
a<b
# a'nın b'den küçük elemanları için TRUE,
# diğerleri için FALSE olan bir vektör döndürür
Vektörün elemanlarına erişim
R
programlama dilinde indeksler 1'den başlar. İstediğimiz elemana erişmek için []
kullanılır
a <- c(1,2,3,4,5)
a[1]
a[5]
İndekslemeyi vektör olarak da yapabiliriz, bunun için bir vektör oluşturmamız gerekiyor. Yani bir serinin 1. ,3. ve 5. elemanına erişmek istersek bir vektör kullanmamız lazım
a <- c(1,2,3,4,5)
# a vektörünün 1,3,5 elemanlarına erişmek için
a[c(1,3,5)]
Kesit (Slice) alma
Mesela a
değişkeninin 2. elemanından 4. elemanına erişmek istersek a[2:4]
kullanılır
a <- c(1,2,3,4,5)
# a vektörünün 1,3,5 elemanlarına erişmek için
a[2:4]
Matrisler iki boyutlu vektörlerdir bildiğiniz gibi. Matris yaratmak için matrix()
fonksiyonunu kullanırız.
# Bu fonksiyonu çağırdığınızda
# 1:9 1'den 9'a kadar bir vektör yaratır
# nrow: Bu vektörü 3 satıra böler
matrix(1:9,nrow=3)
# Vektörün sıralamasını satır bazında yapmak istersek
# byrow=TRUE yapmamız gerekir
matrix(1:9,nrow=3,byrow=TRUE)
# Matrislerin satır ve sütunlarına isim verilebilir
a <- matrix(1:9,nrow=3,byrow=TRUE)
colnames(a) <- c("col1","col2","col3")
rownames(a) <- c("row1","row2","row3")
a
# isimlendirme yaparsak erişim için bunu da kullanabiliriz
a["row1","col2"]
Satır ve sütun toplamlarının alınması
a <- matrix(1:9,nrow=3,byrow=TRUE)
# satır bazında toplam
rowSums(a)
# Burada kafanız karışmasın sadece vektörü yatay olarak gösterdi
# sütun bazında toplam
colSums(a)
Bir matrise vektör/matris ekleme
cbind()
verbind()
a <- matrix(1:9,nrow=3,byrow=TRUE)
a
cbind(a,c(10,11,12))
rbind(a,c(10,11,12))
# iki matrisi birbirine ekleme
b <- matrix(11:19,nrow=3,byrow=TRUE)
cbind(a,b)
Matrislerden kesit alma
a <- matrix(1:9,nrow=3,byrow=TRUE)
a
# a matrisinden kesit
a[2:3,2:3]
# a matrisinin ilk sütunu
a[,1]
# a matrisinin ilk satırı
a[1,]
Dikkatinizi istiyorum burada, eğer kategorik bir değişken yaratmak istiyorsanız (örneğin Kadın Erkek gibi) factors()
fonksiyonunu kullanılırız.
a <- c("K","E","E","K","K")
class(a)
b <- factor(a)
class(b)
Peki neden yaptık bunu? Şimdi yukarıdaki örnekteki b
değişkenini biraz daha inceleyelim. levels()
fonksiyonunu kullanalım.
levels(b)
Gördüğünüz gibi iki adet seviye mevcut. İstersek bunların isimlerini de değiştirebiliriz.
levels(b) <- c("Kadın","Erkek")
b
Özet yapma kabiliyeti de var bu değişkenlerin. summary()
kullanmamız lazım.
summary(b)
Faktörleri sıralı halde yapabiliriz. summary()
fonksiyonu ile özet yaparsak farkı anlayabiliriz.
hiz <- c("iki","üç","bir","bir","üç")
a <- factor(hiz,ordered=TRUE,levels=c("bir","iki","üç"))
summary(a)
Sıralı olmasının bir güzelliği de karşılaştırma yapabilmemizdir. Mesela a
nın ilk elemanı ile ikinci elemanını karşılaştıralım.
a[1] > a [2]
# yukarıda sıralı faktörü bir, iki, üç olarak
# tanımladığımız için ve a[1] = "iki" a[2] = "üç"
# olduğu için sonuç FALSE çıkacak
Geldik en önemli veri yapısı olan dataframe
'e. dataframe
i bir "excel" tablosu olarak düşünebiliriz. Yani satırlar ve sütunlar mevcut. Her bir satır bir gözlemi her bir sütunda bir değişkeni belirtiyor.
R
içerisinde gömülü olan örnek dataframe
yapıları var. Bunlardan mtcars
'a bakalım
mtcars
Bir verinin dataframe
yapısında olmasının birçok avantajı var. Bunları tek tek anlatmak yerine örneklerle gidelim
head()
vestr()
(structure) fonksiyonları
# ilk örneklerini göstermek istersek
# n kaç tane örnek gösterileceğini belirtir
head(mtcars,n=3)
# Değişkenler hakkında bilgi verir
str(mtcars)
datafame
nasıl oluşturulur?
Hazır veri seti kullanmak kolay diyorsunuz sanırım :) Sıfırdan bir tane yapalım isterseniz. data.frame
ile hazırlıyoruz.
isim <- c("Ali","Ahmet","Ayşe","Ayla")
boy <- c(183,172,165,190)
cinsiyet <- c("E","E","K","K")
kilo <- c(90.1,70.4,55.3,65.8)
kisiler <- data.frame(isim,boy,cinsiyet,kilo)
kisiler
str(kisiler)
Dikkat ederseniz bazı değişkenleri otomatik olarak factor
haline çevrilmiştir.
dataframe
yapısında matrislerde olduğu gibi kesit alma yapabiliriz
mtcars[1,]
mtcars[,1]
mtcars[3:5,4:6]
Doğrudan sütun isimlerini de yazarak erişim veriye gerçekleştirebiliriz. İkili sütun örneği yapalım.
kisiler[2:3,c("kilo","boy")]
Genellikle değişkenlere (sütunlara) erişim gerçekleştirmek için
$
işareti kullanılır.
kisiler$boy
dataframe
yapılarında koşullu seçim nasıl yapılır?
Örneğin hazırladığımız "kisiler" verisetinde boyu 175 altı olanları bulalım
# bu bir logical seri döndürür
kisiler$boy<175
# bu seriyi satır kısmına veriyoruz sütunların hepsini alıyoruz
# kisiler[--satırlar-- ,--sütunlar--]
kisiler[kisiler$boy<175,]
Boyu 175 altı ve kilosu 60 üstü olanları bulalım. Burada &
(ve) operatörü kullanalım.
kisiler[kisiler$boy<175 & kisiler$kilo>60,]
Koşullu seçim yapmak için
subset
fonksiyonunu da kullanabiliriz.
subset(kisiler,boy<175)
order()
fonksiyonu sıralama yapmak için kullanılabilir.
order(kisiler$boy)
# order() sonucunu yine satır kısmına
# verirsek veri yapısını sıralayabiliriz.
kisiler[order(kisiler$boy),]
# Büyükten küçüğe sıralamak istersek
kisiler[order(kisiler$kilo,decreasing = TRUE),]
Listeler genel tanımları itibariyle içine her türlü nesneyi atabildiğimiz veri yapılarıdır. list()
fonksiyonu ile oluşturulur.
a <- c(1,2,3,4)
b <- matrix(1:9,nrow=3)
c <- TRUE
d <- kisiler # R içine gömülü veri seti
liste <- list(a,b,c,d)
liste
Liste yapısına isim de verebiliriz.
names(liste) <- c("vektör","matris","logical","dataframe")
liste
Listeyi hazırlarken de isim verebiliriz. Burada dikkat edin isimleri "string" olarak vermiyoruz.
list(vektör=a,matris=b,logical=c,dataframe=d)
Listenin alt elemanlarını seçerken
$
işaretini kullanabiliriz. Hatta bunu birden fazla kez yapabiliriz.
liste$dataframe$kilo
Listeye bir eleman daha eklemek istersek
c()
fonksiyonunu kullanırız.
liste <- c(liste,ekleme=42)
liste