R Nedir?

  • R istatistiksel hesaplamalar yapabilen bir programlama dilidir.

  • 1996 yilinda Auckland Universitesi’nde Ross Ihaka ve Robert Gentleman tarafindan gelistirilmistir.

  • 1960 yillinda Bell Laboratories’de John Chambers ve arkadaslari tarafindan gelistirilen S dilinin acik kaynak kodlu halidir.

  • R yazilimi Genel Kamu Lisansi (GNU-General Public Licence) kosullari altinda ucretsiz dagitilmaktadir.

  • R ve Temel Gelistirme Takimi (R core team) ile ilgili bilgilere R’in internet sitesinden (https://www.r-project.org/) ulasilabilir.

  • R dilinin ilk surumu 29 Subat 2000 tarihinde yayinlanmistir. Her iki-uc ayda bir surumler guncellenmektedir.

R Nedir?

  • R ozgur istatiksel bir programa dilidir.

  • R ayni zamanda bir yorumlayicidir (interpreter).

  • R, bir veri tabani degildir ama veri tabanlarina baglanabilir.

  • Onceki surumleri kullanci dostu olmasa da, son zamanlarda kod editorlerine cok sayida islev eklenmistir.

  • Ayrica java gibi diller araciligi ile ara yuz destegine sahip bir yazilim gelistirme ortamidir.

  • Tablolardan olusan yazilim paketlerine (Excel, Minitab gibi) benzememekle birlikte, yeni geliştiren bazı paketler farklı arayüzler saglamaktadır.

  • Ucretsiz olmasi nedeniyle, ticari destege tabi bir yazilim degildir. Ancak destek alinabilecek cok sayida kaynaga erisilebilir. (stackoverflow, mail listeleri)

Neden R?

  • R istatistiksel programlama, veri analizi ve grafiksel gosterim icin kullanilan ve ticari bir amac gutmeyen ucretsiz bir yazilimdir.

  • R, UNIX, Windows ve MacOS gibi cesitli platformlarda kodlari derlemekte ve calistirmaktadir.

  • SPSS, SAS gibi veri analizi programlari ucretlidir, ayrica bazi ozel psikometri analizleri icin yeterli degildir.

  • R, acik kaynak kodlu oldugu icin program kodlarina istenildigi zaman erisilebilir.

  • Diger istatistiksel yazilimlar ile karsilastirildiginda R “komut satiri” ara yuzunu kullanmaktadir.

  • Basit kosullar, donguler ve kisi-tanimli fonksiyonlar yazmaya uyumlu basit ve etkili bir yazim diline sahiptir.

  • R’in ayrica grafiksel imkanlari oldukca fazladir; bu nedenle yayinlanabilir/basima uygun grafikler olusturmak kolaydir.

  • R ekibi bircok alanda ayrintili dokumantasyonu yapilmis R paketleri gelistirmektedir.

Neden R?

  • Klasik istatistik yazilimlarinda analiz sonuclari bir kez elde edilir. R yaziliminda ise sonuclar calisma alanina kaydedilerek, ileriki analiz asamalarinda tekrar kullanabilir.

  • R, psikometri alaninda siklikla kullanilan simulasyon calismalari icin (tekrarli islemler icin) de avantaj saglamaktadir.

  • R, diger programlama dilleri ve istatistik paket programlari ile uyumludur.

Dezavantajları

  • Basta ogrenilmesi kolay gorunse de, R’da uzmanlasmak oldukca zordur.

  • Menu ile kullanilan programlara aliskin olan kisiler icin baslangicta korkutucu olabilir.

  • R ile bir analizi yapabilmek icin planlama yapilmasi gerekmektedir.

  • R kullanicilari cogunlukla programlamaci degildir.

  • Programlamaya hakim olmayan kisiler tarafindan hazirlanan, okunmasi ve surdurulebilirligi zor kodlar olusturulabilir.

  • R’da hata yapma olasiligi diger programlara gore daha fazladir. Hata kaynagi icin varsayimlarin iyi bilinmesi gerekmektedir.

  • Hiz konusunda SPSS ve SAS’a gore avantajli olsa da diger dillere gore (Python, Matlab gibi) daha yavastir.

  • Gelistirilen cok fazla paket oldugu icin, ihtiyaca uygun en iyi paketin secimi zor olabilmektedir.

R Yazilimin Yuklenmesi

  • Internet tarayicisina R yazilimin internet sitesinin ana sayfasinin adresi yazilir. https://www.r-project.org/

  • Sol menude yer alan “download CRAN” bolumune tikladiktan sonra ulke secilir. Secilen ulkenin yakinligi sadece yukleme hizini degistirecektir.

  • Cikan sayfada “Download and Install R” basligi altindan isletim sistemine uygun olan baglanti secilir.

R STUDIO

  • R konsolda calismaya dogrudan baslanabilir; ancak konsol kullanimi bir kod editoru olmadigi icin cok kullanisli degildir.

  • Rstudio hata ayiklama, gorsellestirme araclari ile birlikte yuklenen modern bir kod editorudur.

  • https://www.rstudio.com/ internet sitesinden kullanilan bilgisayar ve isletim sistemine uygun olarak secilip indirilebilmektedir.

R Temel Özellikler

R konsolda gorunen > isareti, R yaziliminin sizden komut bekledigini belirtir. R’in hesap makinesi olarak kullanim ornekleri sunulmustur.

2+2
## [1] 4

R bosluklara duyarli degildir.

2           +   2 
## [1] 4

R bosluklara duyarli degildir.

2+
  2
## [1] 4

Atama Operatoru

  • Atama operatoru olarak “kucuktur” simgesi ile “kisa cizgi” simgesi <- simgeleri kullanilabilir.

  • <- yerine “esittir” = simgesi de atama operatoru olarak kullanilabilir.

  • Ancak = operatoru programlama yaparken matematiksel esitlikle karisabilmektedir.

Nesne Isimleri

  • Atama yapilacak nesne isimlendirilirken harflerle (A-Z veya a-z) baslamalidir.

  • İsimlendirmeye harfle baslandiktan sonra rakamlar (0-9), nokta (.) ve alt cizgi (_) ile devam edilebilmektedir.

  • R harflerin kucuk ve ya buyuk olmasina karsi duyarlidir.

  • R fonksiyonlarina benzer isimlerde nesne ismi kullanmamaya dikkat edilmelidir.

  • Ayrica c,C,D,F,I,q,t,T gibi tek harfli nesne ismi kullanmaktan kacinilmalidir; bunlarin R’da ozel anlamlari bulunmaktadir.

Yorum Satirlari

  • R yaziliminda # isareti ile baslayan satir, yorum satiridir.

  • Genellikle komutlarin anlamini aciklamak icin kullanilmaktadir.

  • R, bu satirlari dikkate almaz, bunlar sadece kullanicilar icin bilgi ve hatirlatici aciklamalari icermektedir.

# Yorum satirlari kodlarinizi anlamli hale getirir.
a <- 2
y <- a * a
y
## [1] 4

Basit İslemler

  • toplama islemi icin +,

  • cikarma islemi icin -,

  • carpma islemi icin *,

  • bolme islemi icin /,

  • us alma islemi icin ^ veya **

  • mod alma icin ise %% operatorleri kullanilmaktadir.

Basit İslemler

Eni 4 cm, boyu 10 cm bir dikdortgenin alani hesaplayiniz.

# en nesnesi tanimlama

# boy nesnesi tanimlama

# alan nesnesi tanimlama

# alan nesnesini yazdirma
## [1] 40

Basit İslemler

Eni 4 cm, boyu 10 cm bir dikdortgenin kosegen uzunlugunu hesaplayiniz.

# en nesnesi tanimlama

# boy nesnesi tanimlama

# kosegen nesnesi tanimlama

# kosegen nesnesini yazdirma
## [1] 10.77033

R Paketler

  • R fonksiyonlari ayri paketler halinde duzenlenmislerdir. Boylece gerekli paketlerle calisarak daha az bellek kullanimi ve hizli islem gucu saglanir.

  • Bu paketlerin bir baska avantaji da yazilan fonksiyonlardan olusan paketlerin CRAN’den temin edilerek yuklenebilmesidir.

  • Her paketin bir yaraticisi ve kendisine ait bir yardim dosyasi bulunur.

# paket yukleme
# install.packages("CTT")
# paket aktive etme
library(CTT)

Paket yukleme işlemi Rstudio’da yer alan menuler araciligi ile de yapilabilmektedir.

R Paketler

  • R yuklenirken temel (base) paket yuklenir.

  • R paketleri R fonksiyonlarinin, verilerinin ve iyi derlenmis bir formatta kodlarin kombinasyonlarindan olusmaktadir. library() komutu ile kişisel kutuphanenizdeki yuklu paketleri gorebilirsiniz.

  • Sadece temel pakette 1000’den fazla fonksiyon bulunmaktadir.

# temel paket fonksiyonlarina ulasimak icin  
fonksiyonlar <- builtins()
length(fonksiyonlar)
## [1] 1375
fonksiyonlar[910:920]
##  [1] "cosh"                       "cos"                       
##  [3] "contributors"               "Conj"                      
##  [5] "conflicts"                  "conflictRules"             
##  [7] "conditionMessage.condition" "conditionMessage"          
##  [9] "conditionCall.condition"    "conditionCall"             
## [11] "computeRestarts"

Yardım Sayfalari

  • R’da temel ve diğer paketlerde yer alan fonksiyonların islevleri görmek için yardım sayfalarını inceleyebilirsiniz. ? ve help() fonksiyonlari ayni isleve sahiptir.
?is.na
## starting httpd help server ... done
help(sqrt)

Ornegin CTT paketini hem yuklediniz hem de etkinlestirdiniz. Paket fonksiyon ve veri icerigini asagidaki komutlarla gorebilirsiniz.

# install.packages(CTT)
library(CTT)
ls("package:CTT") 
##  [1] "cttICC"              "disattenuated.cor"   "distractor.analysis"
##  [4] "distractorAnalysis"  "itemAnalysis"        "polyserial"         
##  [7] "reliability"         "score"               "score.transform"    
## [10] "spearman.brown"      "subscales"
data(package = "CTT") # yeni bir sekmede acilir.
?reliability

Etkinlestirdiginiz paketlerde yer alan fonksiyonlarin yardim sayfalarina ulasabilirsiniz.

Fonksiyon nedir?

  • Fonksiyon belli bir gorevi yerine getirmek icin yazilan bir grup komuttur.

  • Fonksiyonlarin calismasi icin girdilerinin olmasi gerekmektedir. Fonksiyonlar girdileri ile yaptiklari islem sonucunda bir cikti olustururlar.

  • Fonksiyonlar girdileri o fonksiyonun calismasi icin onceden belirlenen argumanlar ve o argumanlarin degerlerinden olusur.

  • Fonksiyonlarin kullaniminda uc noktaya dikkat edilmelidir.

  1. argumanlarin sirasi
  2. argumanlarin olagan (default) degerleri
  3. bazi argumanlarin zorunlu, bazi argumanlarin opsiyonel olmasidir.

mean() fonksiyonu en sik kullandigimiz fonksiyonlardan biridir.

x <- c(1,2,3)
mean(x)
## [1] 2

Fonksiyonların kendine özgü argümanları da bulunmaktadır. Örneğin mean() fonksiyonu eksik veri olması durumunda varsayılan argümanları ile çalışmayacaktır.

x <- c(1,2,3,NA)
mean(x)
## [1] NA

Ancak argüman **na.rm ** değeri değiştirilerek işlem yapılabilir.

x <- c(1,2,3,NA)
mean(x,na.rm=TRUE)
## [1] 2

R Calisma Alani

  • calisma alani, nesnelerin ve bilgilerin kaydedildigi alandir.

  • ls() ve objects() fonksiyonlari calisma alaninda kayitli nesneleri konsolda gostermektedir.

  • ls() fonksiyonu ile nesneleri cagirma islemi ozellestirilebilir.

  • ls.str() fonksiyonu ise hafizadaki nesneleri ayrintilari ile gostermektedir.

  • Calisma alanindan nesne silmek icin rm("nesneadi") fonksiyonu kullanilabilir.

  • Calisma alanindaki tum nesneleri silmek icin rm(list=ls()) ya da supurge isareti kullanılabilir.

  • Konsolda yer alan islemleri silmek icin ise: CTRL + L (clear console) ya da supurge isareti kullanılabilir.

R Calisma Dizini

  • R yazilimi Start/Baslangic menusu uzerinden calistirildiginda calisma dizini C:/Users/<kullanici adi>/Documents

  • Calisma dizinini sorgulamak icin kullanilacak olan fonksiyon

  • getwd() (get working directory)

  • Calisma dizinini degistirmek icin kullanilacak olan fonksiyon

  • setwd() (set working directory)

  • Bu islem Rstudio menusu “Session” sekmesinden ya da CTRL +Shift + H tuslari ile de yapilabilmektedir.

Komut Dosyasi Kaydetme

  • Kaydet (Save) ya da CTLR + S dosyadi.R uzantisiyla kaydedilebilmektedir.

  • Bu sayede tekrar kullanilabilmekte ya da baskalari ile kolaylikla paylasilabilmektedir.

R’i Kapatma

  • Tum programlar gibi “x” isareti ile ya da q() fonksiyonunu ile sonlandırılabilir.

  • R’dan cikis yaparken, program calisma alaninin kaydedilip kaydedilmeyecegini sormaktadir.

  • Eger R’in calisma alanini kaydetmesini istenirse, R calisma dizinine .Rdatauzantili bir dosya kaydeder.

  • Calisma alanı kaydi icin save.image("dosyaadi") komutu da kullanilabilmektedir.

  • R’dan cikis yapmadan yapilan islem durdurulmak istenirse, konsol bölümündeki “Stop” isareti veya Esc tusları kullanılabilir.

R Kaynakları

R Nesneler

R nesne (object) yonelimli bir programlama dilidir.

  • Karakter (character)

  • Sayisal (numeric)

    • tam sayi (integer)
    • ondalikli sayi (double)
    • kompleks sayi (complex)
  • Mantiksal (logical)

  • Faktor (factor)

  • Liste (list)

  • Fonksiyon (function)

Sayisal Nesneler -tam sayi

# tamsayi nesnesi olusturulmasi
tamsayi <- 2L
# tamsayi nesnesinin turunun sorgulanmasi
typeof(tamsayi)
## [1] "integer"
# tamsayi nesnesinin yazdirilmasi
tamsayi
## [1] 2

ondalik sayi

# ondaliksayi nesnesinin olusturulmasi
ondaliksayi <- 2.5
# ondaliksayi nesnesinin turunun sorgulanmasi
typeof(ondaliksayi)
## [1] "double"
# ondaliksayi nesnesinin yazdirilmasi
ondaliksayi
## [1] 2.5

Sayisal Nesnelerle Islemler-I

# tek elemanli vektorler
x <- 1
y <- 1

x+y
## [1] 2
x-y
## [1] 0
x*y
## [1] 1
x/y
## [1] 1

Sayisal Nesnelerle Islemler-II

# cok elemanli vektorler

x <- c(3,4,5)
y <- c(1,2,3)

# vektor eleman sayilari ayni oldugunda
length(x);length(y)
## [1] 3
## [1] 3
x+y
## [1] 4 6 8
x-y
## [1] 2 2 2
x*y
## [1]  3  8 15
x/y
## [1] 3.000000 2.000000 1.666667

Sayisal Nesnelerle Islemler-III

# cok elemanli vektorler

x <- 1:9
y <- c(1,2,3)  

# vektor eleman sayilari farkli oldugunda 
length(x)/length(y)
## [1] 3
x+y
## [1]  2  4  6  5  7  9  8 10 12
x-y
## [1] 0 0 0 3 3 3 6 6 6
x*y
## [1]  1  4  9  4 10 18  7 16 27
x/y
## [1] 1.0 1.0 1.0 4.0 2.5 2.0 7.0 4.0 3.0

Sayisal Nesnelerle Islemler-IV

# cok elemanli vektorler

x <- 1:5
y <- c(1,2)  

# vektor eleman sayilari farkli oldugunda
length(x)/length(y)
## [1] 2.5
x+y
## Warning in x + y: uzun olan nesne uzunluðu kýsa olan nesne uzunluðunun bir katý
## deðil
## [1] 2 4 4 6 6
x-y
## Warning in x - y: uzun olan nesne uzunluðu kýsa olan nesne uzunluðunun bir katý
## deðil
## [1] 0 0 2 2 4
x*y
## Warning in x * y: uzun olan nesne uzunluðu kýsa olan nesne uzunluðunun bir katý
## deðil
## [1] 1 4 3 8 5
x/y
## Warning in x/y: uzun olan nesne uzunluðu kýsa olan nesne uzunluðunun bir katý
## deðil
## [1] 1 1 3 2 5

Karakter Nesneler

# karakter nesnesi olusturulmasi
karakter <- "olcme"
# Olusturulan nesnenin turunun sorgulanmasi
typeof(karakter)
## [1] "character"
# nesne yazdirilmasi
karakter
## [1] "olcme"

Karakter Nesnelerde Islemler-I

# karakter nesnesi olusturulmasi
ad <- "Su"
soyad <- "Sevim"
# paste fonksiyonu ile iki nesnenin birlestirilmesi
paste(ad,soyad) # iki nesneyi arada bosluk birakarak birlestirir.
## [1] "Su Sevim"
paste(ad,soyad, sep="") # iki nesneyi arada bosluk birakmadan birlestirir.
## [1] "SuSevim"
# sep argumani farkli sekillerde ozellestirilebilir.

Karakter Nesnelerde Islemler-II

# base pakette yer alan bazi karakter vektorler bulunmaktadir.
letters
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
LETTERS
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
month.name
##  [1] "January"   "February"  "March"     "April"     "May"       "June"     
##  [7] "July"      "August"    "September" "October"   "November"  "December"
month.abb
##  [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"

Karakter Nesnelerde Islemler-III

Nesne birlestirme fonksiyonlarindan en sik kullanini paste()

paste() fonksiyonunun temel argumanlari ise sep ve collapse’dir.

# paste fonksiyonu ile karakter nesneler birlestirilebilir.

(alfabe1 <- paste(letters,1:26,sep="_"))
##  [1] "a_1"  "b_2"  "c_3"  "d_4"  "e_5"  "f_6"  "g_7"  "h_8"  "i_9"  "j_10"
## [11] "k_11" "l_12" "m_13" "n_14" "o_15" "p_16" "q_17" "r_18" "s_19" "t_20"
## [21] "u_21" "v_22" "w_23" "x_24" "y_25" "z_26"
(alfabe2 <- paste(letters,1:26,sep="_",collapse=" "))
## [1] "a_1 b_2 c_3 d_4 e_5 f_6 g_7 h_8 i_9 j_10 k_11 l_12 m_13 n_14 o_15 p_16 q_17 r_18 s_19 t_20 u_21 v_22 w_23 x_24 y_25 z_26"
length(alfabe1)
## [1] 26
length(alfabe2)
## [1] 1

Karakter Nesnelerde Islemler-IV

Buyuk Kucuk Harf Duzenleme Fonksiyonlari toupper() ve tolower()

# toupper() ve tolower() fonksiyonları
toupper(letters)
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
tolower(LETTERS)
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"

casefold() fonksiyonu da upper argumani ile birlikte kullanilabilir.

# casefold() fonksiyonu
casefold(month.abb, upper = FALSE)
##  [1] "jan" "feb" "mar" "apr" "may" "jun" "jul" "aug" "sep" "oct" "nov" "dec"
casefold(month.abb, upper = TRUE)
##  [1] "JAN" "FEB" "MAR" "APR" "MAY" "JUN" "JUL" "AUG" "SEP" "OCT" "NOV" "DEC"

Karakter Nesnelerde Islemler-V

Karakter nesnelerin kac harften olustugu nchar() fonskiyonu ile belirlenebilir.

# nchar() fonksiyonu
nchar(month.name)
##  [1] 7 8 5 5 3 4 4 6 9 7 8 8

Karakter nesneleri belli bir yerden bolmek icin substr() ve substring() fonksiyonlari kullanilabilir.

substr("YILMAZ", 1,3)
## [1] "YIL"
substring("YILMAZ", 1:6 , 1:6)
## [1] "Y" "I" "L" "M" "A" "Z"
substring("YILMAZ", 2, 4:6)
## [1] "ILM"   "ILMA"  "ILMAZ"

Karakter nesnelerde daha daha fazlası icin asagidaki fonksiyonları inceleyebilirsiniz.

  • strsplit() noquote() cat()

  • grep() duplicated() agrep()

Mantıksal Nesneler

# mantiksal1 ve mantiksal2 nesnelerinin olusturulmasi
mantiksal1 <-TRUE
mantiksal2 <-T

# Olusturulan nesnelerin turunun sorgulanmasi
typeof(mantiksal1)
## [1] "logical"
typeof(mantiksal2)
## [1] "logical"
# Olusturulan nesnelerin yazdirilmasi
mantiksal1
## [1] TRUE
mantiksal2
## [1] TRUE

Mantıksal Nesneler -I

Mantiksal operatorler programlamanın temeli ve vazgeçilmezidir.

# kucuk olma sinamasi
4<5 
## [1] TRUE
# buyuk olma sinamasi
10>100
## [1] FALSE
# esitlik sinamasii
T==TRUE
## [1] TRUE
# esitlik sinamasii
4==5
## [1] FALSE

Mantıksal Nesneler -II

Mantiksal operatorlerle yapilan sinamalar ile mantiksal nesneler olusturulur.

sonuc <- 4<5

typeof(sonuc)
## [1] "logical"

Nesne Turleri Arasi Donusumm

Nesne turleri arasindaki degisim uygunluk durumuna gore as.*()fonksiyonları ile saglanir.

# Karakter verinin numerik veriye donusturulmesi
as.numeric("3.14") 
## [1] 3.14
# ondalik verinin tam sayiya donusturulmesi
as.integer(3.14)
## [1] 3
as.integer(pi)
## [1] 3
# karakter verinin numerik veriye donusturulmesi
as.numeric("olcme")
## Warning: Zorlamadan dolayý ortaya çýkan NAs
## [1] NA
# mantiksal verinin karakter veriye donusturulmesi (NA)
as.character(TRUE)
## [1] "TRUE"
# numerik verinin karakter veriye donusturulmesi
as.character(10)
## [1] "10"
# mantiksal verinin numerik veriye donusturulmesi
as.numeric(TRUE)
## [1] 1

Nesne Turleri Sorgulama

Nesne turleri sorgulamak icin ise class() ya da mode() fonksiyonlari kullanabilir. Ancak bir nesne turune ait olup olmadigini sorgulamak icin ise is.*() fonksiyonlari kullanilir.

x<- 3.14; class(x) 
## [1] "numeric"
is.numeric(x)
## [1] TRUE
is.logical(x)
## [1] FALSE

Nesne Turleri Sorgulama

Sayisal nesnelerin turu için typeof() fonksiyonu da kullanılabilir.

y <- 2L; typeof(y); class(y) # satir ici kod ayirma
## [1] "integer"
## [1] "integer"
is.integer(y)
## [1] TRUE
is.double(y)
## [1] FALSE

Vektorler

  • R lineer cebir temelli bir programlama dilidir.
  • Vektorler tek boyutludur.

  • R’da vektorler birlestirmek (combine/concatenate) anlamina gelen c() fonksiyonu ile olusturulmaktadir.

  • R da veriler bir araya gelerek veri yapilarini olusturur.

    • vektor (vector)
    • liste (list)
    • matris (matrix)
    • veri seti (data.frame)
    • dizi (array)

Vektor Olusturma

(sayisal_vektor <-  c(1,2,3))
## [1] 1 2 3
# sayisal_vektor nesnesinin turu nedir?
# tam sayi (integer), dogal sayi (double)?
# sorgulayin, diger ture donusturun.
(karakter_vektor <-  c("a","b","c"))  ## cift tirnak
## [1] "a" "b" "c"
(mantiksal_vektor <- c(TRUE,TRUE,FALSE))
## [1]  TRUE  TRUE FALSE

Vektor Turleri

# hem mantiksal hem sayisal deger iceren bir vektor olustup

# nesneyi yazdirin ve sinifini sorgulayin.

Vektor Islemleri - I

Vektor uzunlugu length() fonksiyonu ile vektor turleri ise class(), mode() ya da typeof() fonksiyonlari ise tur belirlemek icin kullanilmaktadir.

# Vektorler bir veya daha fazla elemandan olusabilmektedir.
a <- 1  # tek elemandan olusur.
# Vektor uzunlugunu ogrenmek icin length() fonksiyonu
length(a)
## [1] 1

Vektor Islemleri - II

x <- 1:10
# bir vektorundeki verilerin toplanmasi
sum(x)
## [1] 55
# bir vektorundeki verilerin carpilmasi
prod(x)
## [1] 3628800
# bir vektorundeki verilerin kumulatif toplamlarinin ve carpimlarinin alinmasi
cumsum(x); cumprod(x)
##  [1]  1  3  6 10 15 21 28 36 45 55
##  [1]       1       2       6      24     120     720    5040   40320  362880
## [10] 3628800

Vektor Islemleri - III

# bir vektorundeki verilerin kucukten buyuge siralanmasi
sort(x)
##  [1]  1  2  3  4  5  6  7  8  9 10
# bir vektorundeki verilerin buyukten kucuge siralanmasi

# bir vektorunun elemanlarin siralarinin tersine cevrilmesi
rev(x)
##  [1] 10  9  8  7  6  5  4  3  2  1

Vektor Islemleri - IV

# bir vektorundeki verilerin standart sapmasinin hesaplanmasi
sd(x)
## [1] 3.02765
# bir vektorundeki en buyuk verinin gosterilmesi
max(x)
## [1] 10
# bir vektorundeki en kucuk verinin gosterilmesi
min(x)
## [1] 1

Vektor Islemleri - V

# En buyuk verinin vektorun kacinci elemani oldugunun gosterilmesi 
which.max(x)
## [1] 10
# En kucuk verinin vektorun kacinci elemani oldugunun gosterilmesi 
which.min(x)
## [1] 1
# bir vektorune iliskin ozet bilgilerin verilmesi
summary(x)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    3.25    5.50    5.50    7.75   10.00

Vektor Elemanlarini Secme - I

Vektorlerden eleman sirasi, isim ve mantiksal operatorler olmak uzere uc farkli yolla eleman secilebilir.

ad  <-  c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
# ad vektorunun 1. elemanini secilmesi  "[]" operatoru 
ad[1]
## [1] "Ali"
# ad vektorunun 5. elemaninin secilmesi
ad[5]
## [1] "Aras"
# ad vektorunun son elemaninin secilmesi 
ad[10] 
## [1] "Arda"
# vektorun 10 elemanli oldugunu bilmediginiz de ne yaparsiniz?

Vektor Elemanlarini Secme - II

# birden fazla eleman secimi
# DIKKAT!
# c() fonksiyonu kullanilmazsa, hata mesaji ad[(1,5,8)]
ad[c(1,5,8)]
## [1] "Ali"  "Aras" "Ece"
# Vektorun sadece birinci elemaninin islem disinda tutulmasi
ad[-1]
## [1] "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"   "Arda"
# Vektorun birinci ve besinci elemanlarinin islem disinda tutulmasi
ad[-c(1,5)]
## [1] "Elif"  "Su"    "Deniz" "Berk"  "Can"   "Ece"   "Efe"   "Arda"
# Vektorun sadece belirli bir araliktaki elemanlarinin secilmesi
ad[3:5]
## [1] "Su"    "Deniz" "Aras"

Vektor Elemanlarini Secme - III

# Vektorun son uc elemaninin secilmesi (2 farkli sekilde)

Vektore Eleman Eklenmesi

# Vektore bir eleman eklenmesi
ad[11] <- "Asu"; ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "Asu"
# Vektore birden fazla eleman eklenmesi
ad[12:13] <- c("Ahu","Han"); ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "Asu"   "Ahu"   "Han"

Vektore Eleman Eklenmesi

# Vektorun ortasina eleman eklenmesi
# ?append() fonksiyonu ile yapilabilir. Fonksiyon yardim sayfasini inceleyiniz.

(ad <- append(ad, "Taha", after = 3))
##  [1] "Ali"   "Elif"  "Su"    "Taha"  "Deniz" "Aras"  "Berk"  "Can"   "Ece"  
## [10] "Efe"   "Arda"  "Asu"   "Ahu"   "Han"
# ya da c() fonksiyonu ile yapilabilir.

ad <- c(ad[1:5],"Selim",ad[7:length(ad)]); ad
##  [1] "Ali"   "Elif"  "Su"    "Taha"  "Deniz" "Selim" "Berk"  "Can"   "Ece"  
## [10] "Efe"   "Arda"  "Asu"   "Ahu"   "Han"

Vektore Eleman Eklenmesi

10 kisiden olusan bir gruptaki kisilerinin boy uzunluklari icin ise asagidaki vektor olusturulmustur.

boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <-c(50,55,57,50,48,65,58,62,45,47)

Vektor Elemanlarini Secme - Mantiksal Opertor ile

boy
##  [1] 160 165 170 155 167 162 169 158 160 164
# Boyu 165cm'den kisa olanlarin belirlenmesi
boy < 165
##  [1]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
# Boyu 165cm'den kisa olanlarin kisa_boy vektorune atanmasi
kisa_boy <- boy [boy<165]

Vektor Elemanlarini Secme - Mantiksal Opertor ile

# Boyu ortalamadan uzun olanlarin uzun_boy vektorune atanmasi
uzun_boy  <- boy[boy>mean(boy)]
# Uzun_boy vektorunun yazdirilmasi
uzun_boy
## [1] 165 170 167 169 164
# Boylari 160cm'e esit olanlari yazdirilmasi
 which(boy == 160)
## [1] 1 9

Belirli Oruntulerle Vektor Olusturma

Vektor olusturmanin farkli yollari bulunmaktadir.

En basit yolu iki nokta ":" operatorunu kullanmaktir.

rakamlar <- 0:9
rakamlar
##  [1] 0 1 2 3 4 5 6 7 8 9
# buyukten kucuge rakamlardan vektor olusturulmasi
rakamlar <- 9:0
rakamlar
##  [1] 9 8 7 6 5 4 3 2 1 0

seq()

Belirli bir kurala gore sayi dizileri olusturmak icin ise seq(), rep()ve paste() fonksiyonlarindan yararlanilabilir. Ilk olarak bu fonksiyonlarin yardim sayfalarini inceleyelim.

# 1'den 10'a kadar birer birer artan sayilardan dizi olusturulmasi
# ...................
# seq() fonksiyonu arguman isimleri kullanilmadan calistirilmasi
# .................
# ayni ciktiyi tek bir argumanla elde edebilir misiniz?
# ....................
# length argumani ile istenilen uzunlukta vektor olusturulmasi
# .......................
# Artis miktarinin by argumani ile ayarlanmasi
# .............................
# Belirli bir aralikta kac elemanin yer alacaginin length.out argumani ile belirlenmesi

rep()

rep() fonksiyonu icin ornekler

# uc elemanli bir vektorun uc kere tekrar ettirilmesi
rep(c(3,4,5), 3)
## [1] 3 4 5 3 4 5 3 4 5
# rakamlarin uc kere tekrar ettirilmesi
rep(0:9, times = 3) 
##  [1] 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9

Ciktiyi elde edecek kodlar hazirlayiniz.

## [1] 3 3 3 5 5 5 7 7 7

rep()

Ciktiyi elde edecek kodlar hazirlayiniz.

##  [1] 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7

Ciktiyi elde edecek kodlar hazirlayiniz.

## [1] 1 1 2 2 3 3 4 4

Ciktiyi elde edecek kodlar hazirlayiniz.

## [1] 1 2 2 3 3 3

paste()

paste()fonksiyonu ciktisi her zaman icin karakterdir.

paste(1:4) # ciktisi karakterdir
## [1] "1" "2" "3" "4"
class(paste(1:4)) 
## [1] "character"

Ciktiyi elde edecek kodlar hazirlayiniz.

##  [1] "test 1"  "test 2"  "test 3"  "test 4"  "test 5"  "test 6"  "test 7" 
##  [8] "test 8"  "test 9"  "test 10"

paste()

Ciktiyi elde edecek kodlar hazirlayiniz.

##  [1] "test1"  "test2"  "test3"  "test4"  "test5"  "test6"  "test7"  "test8" 
##  [9] "test9"  "test10"

Ciktiyi elde edecek kodlar hazirlayiniz.

##  [1] "test_1_puan"  "test_2_puan"  "test_3_puan"  "test_4_puan"  "test_5_puan" 
##  [6] "test_6_puan"  "test_7_puan"  "test_8_puan"  "test_9_puan"  "test_10_puan"

Ciktiyi elde edecek kodlar hazirlayiniz.

## [1] "test A" "test B" "test C" "test D" "test 1" "test 2" "test 3"

Rasgele Veri Olusturma

Farkli fonksiyonlarla rastgele veri uretilebilir. Ornegin 0-100 arasinda 20 farkli deger elde edilmek istenilsin. Bunu yapmak icinsample(),runif() ya da rnorm() fonksiyonlarindan yararlanilabilir.

sample(0:100,20)
##  [1] 53 35 45 36 68 77 69 49 67 44 16  5 22 19  8 83 76 25 46 30
runif(20,  0, 100)
##  [1] 99.5290805 64.6471184 59.2271925 48.5643671 67.3420989 43.0852774
##  [7] 42.8198914 47.7331826 71.4348944  8.4050094 79.1220161 42.8492219
## [13] 81.6985711 85.7569403  0.2537109 13.4491070  1.9031308 61.1898465
## [19] 90.2161866 96.8191308
rnorm(20,50,10)
##  [1] 38.76293 61.51676 52.17615 54.12980 63.60586 58.47983 56.16127 43.43994
##  [9] 49.83048 61.17565 54.61633 61.21560 46.36048 58.67560 26.64536 61.33484
## [17] 47.57142 47.65288 42.36398 75.90292

Kullanilan uc fonksiyonun da yardim sayfalarini ve kullanim amaclarini inceleyiniz.

Vektor Aritmetigi

BKI vucut agirliginizin metre cinsinden boy uzunlugunun karesine bolunmesi ile elde edilmektedir. Her bir bireye ait BKI degerini hesaplayiniz.

ad  <-  c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <- c(55,55,57,50,48,65,58,62,45,47)

Asagidaki tabloda yer alan uc sutun icin birer vektor olusturunuz. Ogrencilerin gecme notu her iki sinavin ortalamasi olarak hesaplanacaktir. Bu ogrencilerin gecme notlarini hesaplayiniz. Gecme notlarinin betimsel istatistiklerini hesaplayiniz.

Ogrenci Vize Final
Ogrenci1 50 45
Ogrenci2 55 65
Ogrenci3 60 85
Ogrenci4 70 90
Ogrenci5 80 85

Faktorler

Faktorler bir veri setindeki kesikli/sureksiz degiskeni gostermektedir. Faktorler analizlerde gruplari belirtir. Faktorler hem karakter veri turunden hem de sayisal veri turunden olusturulabilmektedir.

Faktor nesnelerinin aldigi degerlere duzey (level) denir.

# cinsiyet nesnesi olusturulmasi

ad  <-  c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
cinsiyet <-c("erkek","kadin","kadin","kadin","erkek","erkek","erkek","kadin","erkek","erkek")

cinsiyet nesnesinin faktore/sureksiz degiskene donusturulmesi as.factor() ya da factor() fonksiyonlari ile saglanir.

cinsiyet <- factor(cinsiyet)
cinsiyet
##  [1] erkek kadin kadin kadin erkek erkek erkek kadin erkek erkek
## Levels: erkek kadin

Duzey Isimlendirme - I

Faktor nesnelerin (grup duzeyine sahip nesnelerin) grup duzeyleri levels() fonksiyonu ile belirlenebilir.

levels(cinsiyet) # faktor duzeyleri alfabetik siralanir.
## [1] "erkek" "kadin"

Faktor nesneler grup adlari ile olusturulabilecegi gibi, sayisal nesnelerde faktor olarak tanimlanabilir. Olusan nesnenin grup isimleri/duzeyleri levels() fonksiyonu ile olusturulabilir.

cinsiyet2 nesnesi olusturmanin diger bir yolu ise asagidaki gibidir.

# 1 erkek, 2 kadin olmak uzere yeni nesne olusturulmustur.
cinsiyet2 <-c(1,2,2,2,1,1,1,2,1,1)
cinsiyet2 <- factor(cinsiyet2)
cinsiyet2
##  [1] 1 2 2 2 1 1 1 2 1 1
## Levels: 1 2
levels(cinsiyet2)
## [1] "1" "2"

Duzey Isimlendirme - I

Sayisal degere sahip olan faktor nesnesine duzey isimleri levels() fonksiyonu ile atanabilir.

levels(cinsiyet2) <- c("erkek","kadin")
cinsiyet2
##  [1] erkek kadin kadin kadin erkek erkek erkek kadin erkek erkek
## Levels: erkek kadin

Matrisler

  • Vektorler (vector) tek boyutlu veri yapilari iken, matrisler (matrix) ve veri vetleri (dataframe) dikdortgensel verilerdir.

  • Matrisler ve veri setleri satir ve sutunlardan olusan iki boyutlu verilerdir.

  • Matrisler, vektorler gibi tek bir veri turu icerirebilir.

  • En basit matris olusturma yolu, esit uzunluktaki vektorleri birlestirerek yapilabilir.

    • satir bazinda birlestirme rbind()

    • sutun bazinda birlestirme cbind()

  • boy <- c(160,165,170,155,167,162,169,158,160,164)
    
    kilo <- c(55,55,57,50,48,65,58,62,45,47)

rbind()

boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <- c(55,55,57,50,48,65,58,62,45,47)

rmatris <- rbind(boy,kilo) 
dim(rmatris) # 2 x 10 
## [1]  2 10
rmatris # kosegen parantez [satir numarasi, sutun numarasi]
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## boy   160  165  170  155  167  162  169  158  160   164
## kilo   55   55   57   50   48   65   58   62   45    47
class(rmatris)
## [1] "matrix" "array"

cbind()

cmatris <- cbind(boy,kilo) 
dim(cmatris) # 10 x 2
## [1] 10  2
cmatris  # kosegen parantez [satir numarasi, sutun numarasi]
##       boy kilo
##  [1,] 160   55
##  [2,] 165   55
##  [3,] 170   57
##  [4,] 155   50
##  [5,] 167   48
##  [6,] 162   65
##  [7,] 169   58
##  [8,] 158   62
##  [9,] 160   45
## [10,] 164   47
class(cmatris)
## [1] "matrix" "array"

matrix()

Matris olusturmanin diger bir yolunu da matrix() fonksiyonunu kullanmaktadir.

##      [,1]
## [1,]   NA
  • nrow satir sayisi

  • ncol sutun sayisi

  • byrow verilerin nasil siralanacagi

  • dimnanes boyut isimleri

matrix()

  • byrow() argumani kullanimi
# sutun bazinda
matrix(1:20, nrow = 4, ncol = 5, byrow = FALSE, dimnames = NULL)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    5    9   13   17
## [2,]    2    6   10   14   18
## [3,]    3    7   11   15   19
## [4,]    4    8   12   16   20
# satir bazinda
matrix(1:20, nrow = 4, ncol = 5, byrow = TRUE, dimnames = NULL)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
## [4,]   16   17   18   19   20
#Sadece satir ya da sadece sutun sayisi belirlenerek de matris olusturma

matrix(1:20,nrow=4)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    5    9   13   17
## [2,]    2    6   10   14   18
## [3,]    3    7   11   15   19
## [4,]    4    8   12   16   20
#Sadece satir ya da sadece sutun sayisi belirlenerek de matris olusturma

matrix(1:20,ncol=5)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    5    9   13   17
## [2,]    2    6   10   14   18
## [3,]    3    7   11   15   19
## [4,]    4    8   12   16   20

Matrislerde veri türleri

Matrisler tek tur veri icerebilir. Örnegin sayisal verilerden olusan bir matrise karakter veriler eklendiginde, vektorlerde oldugu gibi R otomatik duzeltmeye giderek

set.seed(41)
v2 <- sample(1:100,5)
dim(v2) <- c(1,5) # 4 * 5 matris olusturma
v2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   40   35    5   96   72
rbind(v2, paste("m",1:5, sep="")) # ilk satir da karakter vektore donusturulur.
##      [,1] [,2] [,3] [,4] [,5]
## [1,] "40" "35" "5"  "96" "72"
## [2,] "m1" "m2" "m3" "m4" "m5"
(v3 <- matrix(paste("m",1:5, sep=""),ncol=5))
##      [,1] [,2] [,3] [,4] [,5]
## [1,] "m1" "m2" "m3" "m4" "m5"
cbind(v3, 1) # sayisal nesne karaktere donusturuldu
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] "m1" "m2" "m3" "m4" "m5" "1"

Boyut isimlendirme

Vektorler matrix() fonksiyonu ile birleştirilebilir

boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <- c(55,55,57,50,48,65,58,62,45,47)
boykilo <- matrix(c(boy,kilo),nrow = 10, ncol = 2)

Boyut isimlendirme

İsimlendirme icin diger bir yol ise colnames() ve rownames() fonksiyonlarinin kullanilmasidir.

boykilo2 <- matrix(cbind(boy,kilo),nrow = 10, ncol = 2)
# sadace sutunlara isim verilmesi
colnames(boykilo2) <- c("boy","kilo")
boykilo2
##       boy kilo
##  [1,] 160   55
##  [2,] 165   55
##  [3,] 170   57
##  [4,] 155   50
##  [5,] 167   48
##  [6,] 162   65
##  [7,] 169   58
##  [8,] 158   62
##  [9,] 160   45
## [10,] 164   47
# sadace satirla isim verilmesi
rownames(boykilo2) <- ad
boykilo2
##       boy kilo
## Ali   160   55
## Elif  165   55
## Su    170   57
## Deniz 155   50
## Aras  167   48
## Berk  162   65
## Can   169   58
## Ece   158   62
## Efe   160   45
## Arda  164   47

Matrise eleman eklenmesi

Sutun elemanlari eklenmesi cbind() ile

#2x2 lik matris olusturma
(m1 <- matrix(1:4,nrow=2))
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
# m1 matrisine cbind() ile ucuncu sutunun eklenmesi
(m2 <- cbind(m1,5:6))
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6

Satir elemanlari eklenmesi rbind() ile

#2x2 lik matris olusturma
set.seed(41)
(m3 <- matrix(sample(1:10,4),nrow=2, byrow=TRUE))
##      [,1] [,2]
## [1,]    8    3
## [2,]    5    6
# m1 matrisine cbind() ile ucuncu sutunun eklenmesi
set.seed(41)
(m4 <- cbind(m3,sample(1:10,2)))
##      [,1] [,2] [,3]
## [1,]    8    3    8
## [2,]    5    6    3

Matris olusturma

Asagidaki matrisi olusturacak komutu yaziniz.

##     c1  c2  c3  c4  c5
## r1  10  20  30  40  50
## r2  60  70  80  90 100
## r3 110 120 130 140 150
## r4 160 170 180 190 200

Matris islemleri

Matrisi bir sayi ile toplama islemi, matris ile aynı boyutta her elemani belirtilen sayi olan matrisle toplama islemidir.

(m1 <- matrix(1:4,nrow=2))
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
# matrisi bir sayi ile toplama
m1 + 10
##      [,1] [,2]
## [1,]   11   13
## [2,]   12   14

Matris islemleri

Aynı boyutta iki matrisi toplama

dim(m1)
## [1] 2 2
(m2 <- matrix(10,nrow=2,ncol=2))
##      [,1] [,2]
## [1,]   10   10
## [2,]   10   10
dim(m2)
## [1] 2 2
m1 + m2
##      [,1] [,2]
## [1,]   11   13
## [2,]   12   14

Bir matrisi tek elamanli bir vektor ile carpma

m3<- matrix(1:10,ncol=5,byrow = TRUE);m3
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
m3 * 2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    2    4    6    8   10
## [2,]   12   14   16   18   20

Matris islemleri

Matrislerde satir ve sutun bazinda islem yapabilecek bazi fonksiyonlar:

Satir ortalamalari rowMeans()

Sutun ortalamalari colMeans()

Satir toplamlari rowSums()

Sutun toplamlari colSums()

Matrisin determinantı det()

Matrisin ozdegeri eigen()

Ayrica matrixcalc ve matlib paketlerinde cok sayida fonksiyon bulunur.

Matris islemleri

Matrisinin sutun ortalamalarinin hesaplanmasi

colMeans(boykilo)
## [1] 163.0  54.2

Matrisinin satir ortalamalarinin hesaplanmasi

rowMeans(boykilo)
##  [1] 107.5 110.0 113.5 102.5 107.5 113.5 113.5 110.0 102.5 105.5

m1 matrisine bireylerin BKI degerlerini yeni bir sutun olarak ekleyiniz. BKI vucut agirliginizin metre cinsinden boy uzunlugunun karesine bolunmesi ile elde edilir. Islemi yapmadan once calisma alanindan boy ve kilo nesnelerini kaldiriniz. Islemi sadece boykilo matrisi uzerinden gerceklestiriniz.

##       [,1] [,2]  [,3]
##  [1,]  160   55 21.48
##  [2,]  165   55 20.20
##  [3,]  170   57 19.72
##  [4,]  155   50 20.81
##  [5,]  167   48 17.21
##  [6,]  162   65 24.77
##  [7,]  169   58 20.31
##  [8,]  158   62 24.84
##  [9,]  160   45 17.58
## [10,]  164   47 17.47

Matris elemanlarini secme-I

  • Matris elemanlari indekslerle, boyut isimleriyle ve mantiksal operatorlerle secilebilir.

  • Matrislerden satir elemani secimi matris [satirindeks, ]

  • Matrislerden sutun elemani secimi matris [ ,sutunindeks ]

  • Matrislerden satir ve sutun elemani secimi matris [satirindeks,sutunindeks ]

  • İsimlendirilmis matrislerde indekslerle secim yapilabilecegi gibi indekslerle de secim yapilabilir.

Indeksle secim

boykilo[1,]        
## [1] 160  55

Matrisinin birinci ve ucuncu satir elemanlarinin secilmesi

boykilo[c(1,3),] 
##      [,1] [,2]
## [1,]  160   55
## [2,]  170   57

Ucuncu satirda yer alan ogrencinin boyunun secilmesi

boykilo[3,1]
## [1] 170

Matrislerse sutun secimi

boykilo[ ,1]
##  [1] 160 165 170 155 167 162 169 158 160 164

Haric tutulma islemi ise - opertoru ile yapilabilir.

Matrisin birinci satirinin haric tutulmasi

boykilo[ -1, ]
##       [,1] [,2]
##  [1,]  165   55
##  [2,]  170   57
##  [3,]  155   50
##  [4,]  167   48
##  [5,]  162   65
##  [6,]  169   58
##  [7,]  158   62
##  [8,]  160   45
##  [9,]  164   47

Matris elemanlarini secme-VI

Matrisin birinci ve besinci satirinin haric tutulmasi

boykilo[ -c(1,5), ]
##      [,1] [,2]
## [1,]  165   55
## [2,]  170   57
## [3,]  155   50
## [4,]  162   65
## [5,]  169   58
## [6,]  158   62
## [7,]  160   45
## [8,]  164   47

Birinci sutunun haric tutulmasi

boykilo[ , -1]
##  [1] 55 55 57 50 48 65 58 62 45 47

Matris elemanlarini secme-VII

Mantiksal ifadeler kullanarak da matristen eleman secimi yapilabilir.

Boyu 160cm’den uzun olan kisilerin kilolarinin secilmesi

boykilo[boykilo[,1]>160,2]
## [1] 55 57 48 65 58 47

Boyu 160cm’den uzun olanlar kisilerin boy ve kilolarinin secilmesi

boykilo[boykilo[,1]>160,1:2]
##      [,1] [,2]
## [1,]  165   55
## [2,]  170   57
## [3,]  167   48
## [4,]  162   65
## [5,]  169   58
## [6,]  164   47

Veri Setleri

  • Veri setleri matrisler gibi iki boyutludur.
  • Matrisler tek tur veri icerirken, veri setleri farkli veri turlerini bir arada icerebilir. R’da bir cok fonksiyonun veri setleri ile calismaktadir.
  • Veri setleri R ortaminda data.frame() fonksiyonu ile olusturulabilir. data.frame() fonksiyonu ile ayni uzunluktaki vektorlerden bir veri seti olusturulabilir.
ad  <-  c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <- c(55,55,57,50,48,65,58,62,45,47)
beden <- c("S","M","S","M","S","L","M","L","S","S")
beden <- factor(beden)

(df <- data.frame(ad,boy, kilo, beden)) # 4 sutunlu df 3 farkli yapi icerir.
##       ad boy kilo beden
## 1    Ali 160   55     S
## 2   Elif 165   55     M
## 3     Su 170   57     S
## 4  Deniz 155   50     M
## 5   Aras 167   48     S
## 6   Berk 162   65     L
## 7    Can 169   58     M
## 8    Ece 158   62     L
## 9    Efe 160   45     S
## 10  Arda 164   47     S
  • Eger uzunluklari farkli olan vektorlerle veri setleri olusturulmaya calisilirsa kisa vektor, uzun vektor uzunlugunda tekrar eder.
# 4 farkli uzunlukta vektor olusturulmasi
x <- 11:14; y <- 10; M <- c(10,35); N <- 2:4
data.frame(x, y) # (4,1)
##    x  y
## 1 11 10
## 2 12 10
## 3 13 10
## 4 14 10
data.frame(x, M) # (4,2)
##    x  M
## 1 11 10
## 2 12 35
## 3 13 10
## 4 14 35
data.frame(x,N)  #(4,3) hata
## Error in data.frame(x, N): arguments imply differing number of rows: 4, 3
data.frame(y, M) #(1,2)
##    y  M
## 1 10 10
## 2 10 35
data.frame(y, N) #(1,3)
##    y N
## 1 10 2
## 2 10 3
## 3 10 4
data.frame(M, N) #(2,3)
## Error in data.frame(M, N): arguments imply differing number of rows: 2, 3
  • Temel pakette yer alan veri setlerinin bir listesi
data() # yeni bir pencerede acilir.
  • Veri setlerinin yer aldigi bir de paket bulunmaktadir.
# install.packages("datasets")
library (datasets)
  • Hazir veri setleri calisma ortamina data() fonksiyonu ile aktarilabilir.
data(WorldPhones) # environmete kontrol ediniz. 

Veri Setleri

hazir veri setlerini inceleme

data(cars) # enviromente ekler
iris       # enviromente eklemez!
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica
  • Boyut sorgulamamak icin farkli fonksiyonlar kullanilabilir.
dim(cars) # satir Surun
## [1] 50  2
nrow(cars)
## [1] 50
ncol(cars)
## [1] 2
  • Veri setlerin ilk satirlar head(), son satirlari ise tail() fonksiyonu ile incelenebilir. head() fonksiyonu olagan olarak ilk 6 satiri yazdirir.
head(WorldPhones)
##      N.Amer Europe Asia S.Amer Oceania Africa Mid.Amer
## 1951  45939  21574 2876   1815    1646     89      555
## 1956  60423  29990 4708   2568    2366   1411      733
## 1957  64721  32510 5230   2695    2526   1546      773
## 1958  68484  35218 6662   2845    2691   1663      836
## 1959  71799  37598 6856   3000    2868   1769      911
## 1960  76036  40341 8220   3145    3054   1905     1008
  • Yazdirilacak satir sayisi n argumani ile ayarlanir.
head(WorldPhones,n=3)
##      N.Amer Europe Asia S.Amer Oceania Africa Mid.Amer
## 1951  45939  21574 2876   1815    1646     89      555
## 1956  60423  29990 4708   2568    2366   1411      733
## 1957  64721  32510 5230   2695    2526   1546      773

datasets paketinde yer alan veri setlerinde examples() bolumunde cesitli orneklere yer verilmistir. Ornegin example(WorldPhones)

matplot(rownames(WorldPhones), WorldPhones, type = "b", log = "y",
        xlab = "Year", ylab = "Number of telephones (1000's)")
legend("bottomright", colnames(WorldPhones), col = 1:6, lty = 1:5,
       pch = rep(21, 7))
title(main = "World phones data: log scale for response")

sleep data setinin kullanim ornekleri

head(sleep,3)
##   extra group ID
## 1   0.7     1  1
## 2  -1.6     1  2
## 3  -0.2     1  3
require(stats)
## Student's paired t-test
with(sleep,
     t.test(extra[group == 1],
            extra[group == 2], paired = TRUE))
## 
##  Paired t-test
## 
## data:  extra[group == 1] and extra[group == 2]
## t = -4.0621, df = 9, p-value = 0.002833
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.4598858 -0.7001142
## sample estimates:
## mean of the differences 
##                   -1.58

The sleep prolongations

sleep1 <- with(sleep, extra[group == 2] - extra[group == 1])
summary(sleep1)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    1.05    1.30    1.58    1.70    4.60
stripchart(sleep1, method = "stack", xlab = "hours",
           main = "Sleep prolongation (n = 10)")
boxplot(sleep1, horizontal = TRUE, add = TRUE,
        at = .6, pars = list(boxwex = 0.5, staplewex = 0.25))

Temel paket haric diger paketelerdeki veri setlerine data(veriseti, package="packagename") seklinde ulasilabilir.

data(CTTdata, package="CTT") 
head(CTTdata)
##   i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 i14 i15 i16 i17 i18 i19 i20
## 1  A  B  B  B  B  C  B  C  B   D   D   C   A   B   A   D   B   D   A   C
## 2  C  D  A  D  C  B  D  B  D   A   D   D   A   B   C   C   C   A   D   C
## 3  B  D  C  D  A  B  A  C  B   D   B   A   A   D   D   A   B   C   B   B
## 4  C  C  D  D  D  A  A  D  D   D   A   B   C   B   D   B   C   B   C   A
## 5  A  A  A  D  A  A  D  B  A   C   A   D   C   C   C   C   A   A   A   B
## 6  A  A  B  C  C  A  A  A  A   A   B   C   C   C   C   B   D   C   D   D
df1<- data.frame() 
df1 <- edit(df1)
# duzenlemek icin
fix(df)
# gozatmak icin 
View(df)

Veri setlerinde eleman secme matrislerdeki gibidir.

df[satirindeks, sutunindeks]

# df'nin birinci satir elemanlarinin secilmesi

# df'nin birinci sutun elemanlarinin secilmesi
 
# df'nin ikinci satir elemanlarinin secilmesi

# df'nin ikinci sutun elemanlarinin secilmesi

# df'nin birinci satir ucuncu sutun elemanlarinin secilmesi

# Ali, Elif ve Su isimli ogrencilerin boylarinin secilmesi
#
# Ali,Su ve Ece'nin boylarinin ve kilolarinin secilmesi

Veri setlerinde satir elemanlari yazdirildiginda veri seti (data.frame), sutun elemanlari yazdirildiginda ise vektor (vector) olusmaktadir.

# satir secimi
is.data.frame(df[1,])
## [1] TRUE
# sutun secimi
is.data.frame(df[,1])
## [1] FALSE

Sutun secimi veri seti (data.frame) olarak yapilmak istenirse, drop argumani FALSE degeri ile kullanilir.

df[,1,drop=FALSE]
##       ad
## 1    Ali
## 2   Elif
## 3     Su
## 4  Deniz
## 5   Aras
## 6   Berk
## 7    Can
## 8    Ece
## 9    Efe
## 10  Arda
# Boyu 165cm den uzun ogrencilerin bilgilerinin secilmesi


# Boyu 165 cm'den uzun ve kilosu 50 kg'nin altinda 
# olan ogrencilerin bilgilerinin secilmesi

subset()

Veri secim islemi icin subset() fonksiyonu kullanilabilir.

?subset bir fonksiyonu ilk daha kullaniyorsaniz, mutlaka yardim sayfasini inceleyin. ?airquality ornek kodlarini mutlaka calistirin, anlamlandirmaya calisin.

subset(airquality, Temp > 90, select = c(Ozone, Temp))
##     Ozone Temp
## 42     NA   93
## 43     NA   92
## 69     97   92
## 70     97   92
## 75     NA   91
## 102    NA   92
## 120    76   97
## 121   118   94
## 122    84   96
## 123    85   94
## 124    96   91
## 125    78   92
## 126    73   93
## 127    91   93

subset()

subset(airquality, Day == 1, select = -Temp)
##     Ozone Solar.R Wind Month Day
## 1      41     190  7.4     5   1
## 32     NA     286  8.6     6   1
## 62    135     269  4.1     7   1
## 93     39      83  6.9     8   1
## 124    96     167  6.9     9   1
subset(airquality, Day == 1, select = Ozone:Wind)
##     Ozone Solar.R Wind
## 1      41     190  7.4
## 32     NA     286  8.6
## 62    135     269  4.1
## 93     39      83  6.9
## 124    96     167  6.9
## df verisi sadece "S" beden 
subset(df,beden =="S")
##      ad boy kilo beden
## 1   Ali 160   55     S
## 3    Su 170   57     S
## 5  Aras 167   48     S
## 9   Efe 160   45     S
## 10 Arda 164   47     S
# 50 kg alti
subset(df,kilo <50)
##      ad boy kilo beden
## 5  Aras 167   48     S
## 9   Efe 160   45     S
## 10 Arda 164   47     S
# 50 kilo alti ve belilri sutunlar
subset(df,kilo <50,select = ad:boy)
##      ad boy
## 5  Aras 167
## 9   Efe 160
## 10 Arda 164

Eleman ekleme islemi

Veri setine yeni sutun ekleme isleme $ operatoru ile [[]] operatoru ile cbind() fonksiyonlari ile yapilabilmektedir.

df2 <- data.frame(
      S1 = sample(0:100,20),
      S2 = runif(n=20 ,min= 50 , max=70)
)

head(df2)
##   S1       S2
## 1  4 62.58412
## 2 95 61.36400
## 3 71 64.92730
## 4 57 69.65860
## 5 28 66.20234
## 6 69 65.83110
df2 <- round(df2,2)

$ operatoru ile sutun ekleme

df2$S3 <- sample(60:80,20,replace = TRUE)
head(df2)
##   S1    S2 S3
## 1  4 62.58 77
## 2 95 61.36 72
## 3 71 64.93 66
## 4 57 69.66 80
## 5 28 66.20 79
## 6 69 65.83 80

[[]] operatoru ile sutun ekleme

df2 veri setinin ilk uc sutunun rowMeans() fonksiyonu ile ortalamasinin alinarak ort isimi ile veri setine eklenmesi

df2[["ort"]] <- round(rowMeans(df2),2)
head(df2)
##   S1    S2 S3   ort
## 1  4 62.58 77 47.86
## 2 95 61.36 72 76.12
## 3 71 64.93 66 67.31
## 4 57 69.66 80 68.89
## 5 28 66.20 79 57.73
## 6 69 65.83 80 71.61

cbind() fonksiyonu ile sutun ekleme

cbind( df2, S4 = 10)
##    S1    S2 S3   ort S4
## 1   4 62.58 77 47.86 10
## 2  95 61.36 72 76.12 10
## 3  71 64.93 66 67.31 10
## 4  57 69.66 80 68.89 10
## 5  28 66.20 79 57.73 10
## 6  69 65.83 80 71.61 10
## 7  21 61.61 61 47.87 10
## 8  58 53.71 80 63.90 10
## 9  30 69.77 77 58.92 10
## 10 44 68.59 72 61.53 10
## 11 81 53.68 67 67.23 10
## 12 84 68.42 80 77.47 10
## 13 94 69.68 78 80.56 10
## 14 91 60.53 60 70.51 10
## 15 75 52.44 63 63.48 10
## 16 16 59.42 76 50.47 10
## 17 67 59.62 63 63.21 10
## 18 51 66.72 69 62.24 10
## 19 90 63.22 70 74.41 10
## 20 29 64.52 77 56.84 10

Veri setinden istenilen sutunun cikarilabilir. Bu islemi yapmak icin iki farkli yol kullanilabilir. - operatoru

head(df2,3)
##   S1    S2 S3   ort
## 1  4 62.58 77 47.86
## 2 95 61.36 72 76.12
## 3 71 64.93 66 67.31
df2 <- df2[,-4] 
head(df2,3)
##   S1    S2 S3
## 1  4 62.58 77
## 2 95 61.36 72
## 3 71 64.93 66

NULL operatoru

df2$S3 <- NULL
head(df2,3)
##   S1    S2
## 1  4 62.58
## 2 95 61.36
## 3 71 64.93

Veri setlerine degisken ekleyip, cikarabileceginiz gibi gozlem de ekleyip, cikarabilirsiniz. Veri setine iki satir ekleme

dim(df2)
## [1] 20  2
df3 <- data.frame(S1=c(50,60),S2=c(55.3,65.5))
rbind (df2,df3)
##    S1    S2
## 1   4 62.58
## 2  95 61.36
## 3  71 64.93
## 4  57 69.66
## 5  28 66.20
## 6  69 65.83
## 7  21 61.61
## 8  58 53.71
## 9  30 69.77
## 10 44 68.59
## 11 81 53.68
## 12 84 68.42
## 13 94 69.68
## 14 91 60.53
## 15 75 52.44
## 16 16 59.42
## 17 67 59.62
## 18 51 66.72
## 19 90 63.22
## 20 29 64.52
## 21 50 55.30
## 22 60 65.50

Veri yapisi

Veri setlerinin yapisini incelemek icin str() fonksiyonundan yararlanilmaktadir.

str(df)
## 'data.frame':    10 obs. of  4 variables:
##  $ ad   : chr  "Ali" "Elif" "Su" "Deniz" ...
##  $ boy  : num  160 165 170 155 167 162 169 158 160 164
##  $ kilo : num  55 55 57 50 48 65 58 62 45 47
##  $ beden: Factor w/ 3 levels "L","M","S": 3 2 3 2 3 1 2 1 3 3

“df” veri seti 10 gozlemden , 4 degisken. Her bir degiskenin onunde $ operaturu olduguna dikkat ediniz.

veri setinin incelenmek icin kullanilabilecek diger fonksiyon ise attributes()

attributes(df)
## $names
## [1] "ad"    "boy"   "kilo"  "beden"
## 
## $row.names
##  [1]  1  2  3  4  5  6  7  8  9 10
## 
## $class
## [1] "data.frame"

Isimlendirme

Veri setleri vektor birlestirme uzerinden yapilirsa, vektor adlari sutun ismi olarak kullanilir. Ancak bu isimler degistirilebilir. Bu islem data.frame() fonksiyonu icinde yapilabilir.

df <- data.frame(isim = ad,
                 boyolcum = boy,
                 kiloolcum= kilo, 
                 bedenolcum=beden)
df
##     isim boyolcum kiloolcum bedenolcum
## 1    Ali      160        55          S
## 2   Elif      165        55          M
## 3     Su      170        57          S
## 4  Deniz      155        50          M
## 5   Aras      167        48          S
## 6   Berk      162        65          L
## 7    Can      169        58          M
## 8    Ece      158        62          L
## 9    Efe      160        45          S
## 10  Arda      164        47          S

Veri seti isimlendirme de diger bir yol ise names() ya da colnames() fonksiyonlaridir.

df <- data.frame(ad,boy,kilo,beden)
names(df) <- c("isim","boyolcum ","kiloolcum","bedenolcum")
df
##     isim boyolcum  kiloolcum bedenolcum
## 1    Ali       160        55          S
## 2   Elif       165        55          M
## 3     Su       170        57          S
## 4  Deniz       155        50          M
## 5   Aras       167        48          S
## 6   Berk       162        65          L
## 7    Can       169        58          M
## 8    Ece       158        62          L
## 9    Efe       160        45          S
## 10  Arda       164        47          S

Veri setinin tumune iliskin betimsel istatistikler

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Veri setinin tek değişkenine iliskin betimsel istatistikler

summary(cars$speed)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     4.0    12.0    15.0    15.4    19.0    25.0

attach() fonksiyonu

attach() fonksiyonu ile bir veri setinin sutunlari sutun isimi ile enviromente eklenir. Aynı islem detach() fonksiyonu ile tersine alinabilir.

summary(women$height)   
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0    61.5    65.0    65.0    68.5    72.0
attach(women)
summary(height)   # Ayni nesne isimi ile cagirilir.
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0    61.5    65.0    65.0    68.5    72.0
height <- height*2.54   # Bunu yapmamaya calisin!!
                        # in the user's workspace
find("height")
## [1] ".GlobalEnv" "women"
summary(height)         # Yeni degisken
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   147.3   156.2   165.1   165.1   174.0   182.9
rm(height)
detach("women")
summary(women$height)   # unchanged
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0    61.5    65.0    65.0    68.5    72.0

Veri setlerini duzenleme

df veri setindeki verilerin buyukten kucuge siralanmasi

df[order(df$boy,decreasing = TRUE),]
##     isim boyolcum  kiloolcum bedenolcum
## 3     Su       170        57          S
## 7    Can       169        58          M
## 5   Aras       167        48          S
## 2   Elif       165        55          M
## 10  Arda       164        47          S
## 6   Berk       162        65          L
## 1    Ali       160        55          S
## 9    Efe       160        45          S
## 8    Ece       158        62          L
## 4  Deniz       155        50          M

BKI vektorunun uc farkli yollar farkli isimler ile veri setine eklenmesi ve ikisinin cikarilmasi ornegi

df <-data.frame(ad,boy,kilo);df
##       ad boy kilo
## 1    Ali 160   55
## 2   Elif 165   55
## 3     Su 170   57
## 4  Deniz 155   50
## 5   Aras 167   48
## 6   Berk 162   65
## 7    Can 169   58
## 8    Ece 158   62
## 9    Efe 160   45
## 10  Arda 164   47
df$BKI <- df$kilo/ (df$boy/100 * df$boy/100)
df$BKI <- round(df$kilo/ (df$boy/100 * df$boy/100),2)
df[["BKI2"]] <- round(df$kilo/ (df$boy/100 * df$boy/100),2)
df <- cbind(df, BKI3 = round(df$kilo/ (df$boy/100 * df$boy/100),2))
df 
##       ad boy kilo   BKI  BKI2  BKI3
## 1    Ali 160   55 21.48 21.48 21.48
## 2   Elif 165   55 20.20 20.20 20.20
## 3     Su 170   57 19.72 19.72 19.72
## 4  Deniz 155   50 20.81 20.81 20.81
## 5   Aras 167   48 17.21 17.21 17.21
## 6   Berk 162   65 24.77 24.77 24.77
## 7    Can 169   58 20.31 20.31 20.31
## 8    Ece 158   62 24.84 24.84 24.84
## 9    Efe 160   45 17.58 17.58 17.58
## 10  Arda 164   47 17.47 17.47 17.47
df$BKI2 <- NULL
df$BKI <- NULL

Soru

Aşağıda size verilen dört vektörden bir veri seti oluşturunuz. Oluşturduğunuz veri setinin deneme sütunundaki eksik veri sayısını hesaplayan komut yazınız.

ad = c('Su', 'Pera', 'Sule', 'Can', 'Cem', 'Name', 'Aras', 'Mete', 'Kaan', 'Pelin')
puan = c(12.5, 9, 16.5, 12, 9, 20, 14.5, 13.5, 8, 19)
deneme = c(1, NA, 2, NA, 2, NA, 1, NA, 2, 1)
bonus = c(1,0,1, 0, 0, 1, 1, 0,0, 1)
## [1] "Veri Seti:"
##       ad puan deneme bonus
## 1     Su 12.5      1     1
## 2   Pera  9.0     NA     0
## 3   Sule 16.5      2     1
## 4    Can 12.0     NA     0
## 5    Cem  9.0      2     0
## 6   Name 20.0     NA     1
## 7   Aras 14.5      1     1
## 8   Mete 13.5     NA     0
## 9   Kaan  8.0      2     0
## 10 Pelin 19.0      1     1
## [1] "Deneme sütunundaki NA sayisi:"
## [1] 4

KAYNAKCA

Atar, B., Atalay Kabasakal, K, Ünsal Özberk, E. B., Özberk, E. H. Ve Kıbrıslıoğlu Uysal, N. (2020).  R ile Veri Analizi ve Psikometri Uygulamaları, Editör, Pegem Akademi, Ankara.

ODEV

Sadece temel pakette 1500’e yakın fonksiyon bulunduğu için ders dışı alıştırmalar yapmanız gereklidir.

R kurulumu ile ilgili learnr paketi hazirlanmiş bir interaktif alistirma ornegini inceleyeniz.

swirl package - learn R in R paketi yukleyerek alıştırma yapayı deneyiniz.

Referens kart sayfasının çıktısını alarak duvarınıza asmanızı öneririm.

datacamp ya da benzeri sitelerden R çalışmaları yapabilirsiniz.

Veri duzenleme konusunda iki paket: DataEditR , editData inceleyiniz.