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 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)
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.
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.
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.
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 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 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 olarak “kucuktur” simgesi ile “kisa cizgi” simgesi <- simgeleri kullanilabilir.
<- yerine “esittir” = simgesi de atama operatoru olarak kullanilabilir.
Ancak = operatoru programlama yaparken matematiksel esitlikle karisabilmektedir.
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.
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
toplama islemi icin +,
cikarma islemi icin -,
carpma islemi icin *,
bolme islemi icin /,
us alma islemi icin ^ veya **
mod alma icin ise %% operatorleri kullanilmaktadir.
Eni 4 cm, boyu 10 cm bir dikdortgenin alani hesaplayiniz.
# en nesnesi tanimlama
# boy nesnesi tanimlama
# alan nesnesi tanimlama
# alan nesnesini yazdirma
## [1] 40
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 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 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"
? 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 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.
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
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 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.
Kaydet (Save) ya da CTLR + S dosyadi.R uzantisiyla kaydedilebilmektedir.
Bu sayede tekrar kullanilabilmekte ya da baskalari ile kolaylikla paylasilabilmektedir.
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.
RSiteSearch ("sample.int") "ltm reliability gibi fonskiyon isimler argumansiz kullanirlirsa icerigi gorunur. Karmasik gorunse de siz de yapabilirsiniz. Ogrenmek icin iyi bir yoldur.R nesne (object) yonelimli bir programlama dilidir.
Karakter (character)
Sayisal (numeric)
Mantiksal (logical)
Faktor (factor)
Liste (list)
Fonksiyon (function)
# tamsayi nesnesi olusturulmasi
tamsayi <- 2L
# tamsayi nesnesinin turunun sorgulanmasi
typeof(tamsayi)
## [1] "integer"
# tamsayi nesnesinin yazdirilmasi
tamsayi
## [1] 2
# ondaliksayi nesnesinin olusturulmasi
ondaliksayi <- 2.5
# ondaliksayi nesnesinin turunun sorgulanmasi
typeof(ondaliksayi)
## [1] "double"
# ondaliksayi nesnesinin yazdirilmasi
ondaliksayi
## [1] 2.5
# tek elemanli vektorler
x <- 1
y <- 1
x+y
## [1] 2
x-y
## [1] 0
x*y
## [1] 1
x/y
## [1] 1
# 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
# 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
# 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 nesnesi olusturulmasi
karakter <- "olcme"
# Olusturulan nesnenin turunun sorgulanmasi
typeof(karakter)
## [1] "character"
# nesne yazdirilmasi
karakter
## [1] "olcme"
# 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.
# 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"
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
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 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()
# 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
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
Mantiksal operatorlerle yapilan sinamalar ile mantiksal nesneler olusturulur.
sonuc <- 4<5
typeof(sonuc)
## [1] "logical"
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 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
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 tek boyutludur.
R’da vektorler birlestirmek (combine/concatenate) anlamina gelen c() fonksiyonu ile olusturulmaktadir.
R da veriler bir araya gelerek veri yapilarini olusturur.
(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
# hem mantiksal hem sayisal deger iceren bir vektor olustup
# nesneyi yazdirin ve sinifini sorgulayin.
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
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
# 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
# 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
# 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
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?
# 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"
# Vektorun son uc elemaninin secilmesi (2 farkli sekilde)
# 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"
# 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"
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)
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]
# 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
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() 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
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()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"
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"
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.
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 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
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"
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
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)
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"
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"
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
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
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"
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)
İ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
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
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
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
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
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.
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 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
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
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
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
# 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
data() # yeni bir pencerede acilir.
# install.packages("datasets")
library (datasets)
data() fonksiyonu ile aktarilabilir.data(WorldPhones) # environmete kontrol ediniz.
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
dim(cars) # satir Surun
## [1] 50 2
nrow(cars)
## [1] 50
ncol(cars)
## [1] 2
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
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
Kullanisli olmasa da excel, spps gibi veri girisi saglayan bir arayuz bulunmaktadir.
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
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(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
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 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"
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 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
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
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
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.