19 Ağustos 2016 Cuma

R ile İlgili Bilinmesi Gerekenler

Soru 1: R'da dataları nasıl aggregate edersin?

Cevap 1:Bu soru için örnek bir senaryo üzerinden gidelip. R'ın içinde bulunan bir dataset'i load ederek bu datasetin içindeki dimension'lara göre measure'ları aggregate edelim.

Öncelikle bu senaryoda kullanacağımız dataset'i tanıyalım
Datanın Adı          :ChickWeight
Satır sayısı           :578
Dimension Sayısı  :4 
Dimesion Adları:
                 Weigth:Tavukların ağırlığı
                 Time:Tavukların doğumundan beri ağırlık ölçümünün yapılma aralığı
                 Chick:Tavukların uniqe ID'si
                 Diet:Tavukların beslenme seviyesi

Datayı load edelim R ortamına
data<-ChickWeight
Şimdi head() fonskiyonu ile datasetimiz ilk altı satırını getirerek datanın nasıl olduğunu görelim
head(data)

     weight Time  Chick Diet
1     42         0      1         1
2     51         2      1         1
3     59         4      1         1
4     64         6      1         1
5     76         8      1         1
6     93        10     1         1

Şimdi time'a göre aggregate edeceğimizden time'ı uniqe olarak görelim

unique(data$Time)

0  2  4  6  8 10 12 14 16 18 20 21

Datamızı da gördükten sonra aggregate() fonksiyonu ile 

a-zaman'a göre tavukların ortalama ağırlıklarını görelim

aggregate(data$weight, list(time=data$Time),mean)

Yukardaki fonksiyonun çıktısı aşağıdaki gibidir.

   time         x
1     0    41.06000
2     2    49.22000
3     4    59.95918
4     6    74.30612
5     8    91.24490
6    10   107.83673
7    12   129.24490
8    14   143.81250
9    16   168.08511
10   18  190.19149
11   20  209.71739
12   21  218.68889

b-Diet'e göre tavuklarının ağırlıklarının toplamını görelim

unique(data$Diet)

1,2,3,4

aggregate(data$weight, list(diet=data$Diet),sum)


  diet     x

1    1   22582

2    2   14714

3    3   17154

4    4   15961


Soru 2:R'da 2 data frame'i nasıl merge edebilirsin?

Dataframe=Veri tablolarının depolanması için kullanılır. Eşit uzunluktaki vektörler listesidir.
Cevap 2:R da dataframe'ler 2 şekilde merge edilebilir 1. rbind() fonksiyonu 2. cbind() fonksiyonuyla merge edilir.
a-cbind() fonksiyonu kullanılarak merge etmek
  cbind() fonksiyonu aslında dataframe'leri yan yana yazdırmaktır.
Örnek
n = c(2, 3, 5)                           //1. dataframe'in 1.kolondaki veriler
s = c("aa", "bb", "cc")              //1. dataframe'in 2. kolondaki veriler
b = c(TRUE, FALSE, TRUE)  //1.  dataframe 3. kolondaki veriler
df1 = data.frame(n, s, b)            //3  kolondan 1. data frame'i oluşturma

1. dataframe(df1)'in çıktısı aşağıdai gibidir.
     n  s     b
1   2  aa  TRUE
2   3  bb FALSE

3   5  cc  TRUE


n1 = c(1, 2, 4)                         //2. dataframe'in 1.kolondaki veriler
s1 = c("ee", "ff", "gg")             //2. dataframe'in 2. kolondaki veriler
b1 = c(TRUE, FALSE, TRUE) //2. dataframe'in 2. kolondaki veriler
df2 = data.frame(n1, s1, b1)      //3  kolondan 2. data frame'i oluşturma

2. dataframe(df2)'in çıktısı aşağıdai gibidir.
     n  s     b
1   1  ee  TRUE
2   2  ff   FALSE

3   4  gg  TRUE

df3<-cbind(df1,df2)

2  dataframe'in  merge edilmesiden sonra ortaya çıkan dataframe'in(df3)'in çıktısı aşağıdai gibidir.

       n   s     b         n1 s1    b1
1     2  aa   TRUE   1   ee  TRUE
2     3  bb   FALSE 2   ff   FALSE
3     5  cc   TRUE   4   gg  TRUE

b-rbind() fonksiyonu kullanarak merge etme
   rbind() fonksiyonu aslında sql'deki union'a eşittir. Kolon isimleri aynı olan 2 dataframe'i unionlar.

Örnek

n = c(2, 3, 5)                           //1. dataframe'in 1.kolondaki veriler
s = c("aa", "bb", "cc")              //1. dataframe'in 2. kolondaki veriler
b = c(TRUE, FALSE, TRUE)  //1.  dataframe 3. kolondaki veriler
df1 = data.frame(n, s, b)            //3  kolondan 1. data frame'i oluşturma

n = c(1, 2, 4)                         //2. dataframe'in 1.kolondaki veriler
s = c("ee", "ff", "gg")             //2. dataframe'in 2. kolondaki veriler
b = c(TRUE, FALSE, TRUE) //2. dataframe'in 2. kolondaki veriler
df2 = data.frame(n, s, b)      //3  kolondan 2. data frame'i oluşturma

df3<-rbind(df1,df2)

2  dataframe'in  rbind() fonksiyonu ile merge edilmesiden sonra ortaya çıkan dataframe'in(df3)'in çıktısı aşağıdai gibidir.

     n   s      b
1   2  aa   TRUE
2   3  bb   FALSE
3   5  cc   TRUE
4   1  ee   TRUE
5   2  ff    FALSE
6   4  gg   TRUE

Soru 3:R'da nasıl data import edilir.

Cevap 3 :Data'yı R ortamına import etmenin 1.yolu RStudio yada R commander GUI'lerinden birini kullanılarak import etmek 2. si ise R data'ya import etme fonksiyonlarını kulanmak

Aşağıdaki ilk örnek R studio kullanılarak datayı import etmenin yolu


Şimdi ise r fonksiyonların  kullanarak dataları import etmek. Öncelikle R daki çalışma dizini, R ortamına import edilecek datanın bulunduğu konum olarak set etmek bunu aşağıdaki şekilde yapabilirsiniz.

getwd()                  //Şuanki çalışma dizinini gösterir.

setwd("file path")   //Çalışma dizini yeni path'e set etmek

Sonra aşağıdaki fonksiyonlar kullanılarak istenilen data R ortamına import edilebilir.

mydata=read.table("mydata.txt")  //txt dosyalarını okuyan fonksiyon

mydata=read.csv("mydata.csv")  //csv dosyalarını okuyan fonksiyon

mydata=read.csv("mydata.xls")  //xls dosyalarını okuyan fonksiyon

Soru 4:Matrix ve dataframea arasındaki fark nedir.

Cevap 4:Dataframe içinde  farklı data tiplerini bulundurabilir yani bir dataframe de hem integer hemde character bulunabilir ama Bir matrix aynı data tiplerini içinde bulundurabilir.farklı data tiplerini bulundurmaz.

Soru 5:Bir string'i 2 farklı stringi nasıl ayırabilirsin?

Cevap 5:Örnek string'imiz "sukru.erguntop" bu string "." dan önce ve sonrasını ayıralım

strsplit("sukru.erguntop",split=".")  //strsplit ile ayrılabilir.

Soru 6:Bir  verinin tipini nasıl öğrenebilirsin?

Cevap 6: class() fonksiyonu ile öğrenebilirsiniz. örnek olarak
x<-1
class(x)  //x in numeric olduğunu döner

x<-"sukru"
class(x)  //x in character olduğunu döner

Soru 7:attach() ve detach() fonksiyonları ne işe yarar ve aradaki fark nedir.

Ceap 7:Örnek olarak, "Expression", "Gender" ve "Subtype" olmak üzere 3 kolona sahip olan datayı R ortamına import edelim

x<-read.csv('anova.csv',header='T')

bu data'daki  kolonların datasını aşağıdaki şekilde çağırabilir.

x$Gender

 [1] m m m m m f m m f m m f m m m m f m m m m m m f m m m f m m m m f m m m m
 [38] m m m m m m m m m f m f m m m m m f m m f m m f m m m m f m m m m m m m m
 [75] m m f m m m m m f m m m m m m m m m f m m f m m f m f m m f m m f m m f m
[112] m f m m f m m m f m m m f m f m f f f f f f m f m f f f m f f f f m f m f
[149] m f f m f f f f f m f m f f m f f m f f m f f f m f f f m f f f m f f m f
[186] f f m f f m f m m f m f m f f m f f f f f m f f m f f f m m m f m m m f f
[223] f f f f f m m m f m f f m f f f m f f f m f f f f m f m f f f f m f f f m
[260] f f m f f f f f f m f f m f f f f f f m f f
Levels: f m

ama eğer attach fonksiyonu kullanılsaydı attach(x) diye gender kolonunu aşağıdaki şekilde çaırabilirdik

->Gender

 [1] m m m m m f m m f m m f m m m m f m m m m m m f m m m f m m m m f m m m m
 [38] m m m m m m m m m f m f m m m m m f m m f m m f m m m m f m m m m m m m m
 [75] m m f m m m m m f m m m m m m m m m f m m f m m f m f m m f m m f m m f m
[112] m f m m f m m m f m m m f m f m f f f f f f m f m f f f m f f f f m f m f
[149] m f f m f f f f f m f m f f m f f m f f m f f f m f f f m f f f m f f m f
[186] f f m f f m f m m f m f m f f m f f f f f m f f m f f f m m m f m m m f f
[223] f f f f f m m m f m f f m f f f m f f f m f f f f m f m f f f f m f f f m
[260] f f m f f f f f f m f f m f f f f f f m f f
Levels: f m

Eğer attach etmeden yukardaki şekilde çağırsaydık aşağıdaki hatayı alıyor olurduk.
Error: object 'Gender' not found

Datayı tekrar x$Gender şeklinde çağırmak için detach(x) fonksiyonu kullanmak  gerekir.


Soru 8:R'da veri tipi dönüşümlerini açıklayın.

Cevap 8: Data'nın tipini doğrulamak için is.foo, data tipini değiştirmek için ise as.foo kullanılır.

Örnek
x<-1
is.numeric(x)   //Bu fonsiyon x'in numeric olup olmadığını soruyor. X numeric olduğundan True değeri döner.

Diğer örnek ise x'i numeric'ten character'e dönüştürme

as.character(x)  //X'i character'e döndürdü.

Soru  9: Birden fazla string'i nasıl birleştirebilirsin?

Cevap 9:  paste() fonksiyonu ile birleştirilebilir. Aşağıdaki örnekte gösterilmektedir.

paste("Data","Science","in","R","Programming",sep="_") 

Çıktısı aşağıdaki gibidir.

 "Data_Science_in_R_Programming"

Soru 10:R da web application yapmak için kullanılan paket hangisidir. 

Cevap 10: Shiny paketidir. İçinde bulundurduğu fonksiyonlar ile interactive bir web application yapılabilir.

örnek bir shiny uygulaması



Soru 11: R'da istatistiksel analizler ve grafikler oluşturmak için kullanılan veri yapıları nelerdir.

Cevap 11:
a-Vectors:R'daki temel veri tipidir. Atomic vektör ve list olmak üzere 2'ye ayrılmaktadır. Atomik vektör ve list arasındaki fark; Atomik vektörde tüm veri tipleri aynı olmalıdır ve genellikle c() fonksiyonu ile oluşturulur. Örnek olarak aşağıda gösterilemektedir.
x<-c(1,2,3)
List'te ise aynı olmak zorunda değildir ve genellikle list() fonksiyonu ile oluşturulmaktadır.
x<-list(1,2,3)

b-Matrix:Örnek bir matrix kullanımı aşağıda gösterilmektedir.
a<-matrix(1:6,ncol=3, nrow=2)
Çıktısı aşağıdaki gibidir.
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
c-Array:Örnek bir array kullanımı aşağıda gösterilmektedir.
b <- array(1:12, c(2, 3, 2))
Çıktısı aşağıdaki gibidir.
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

d-Dataframe:Daha önceki bölümde değinildiği için bu bölümde anlatılmayacak

Soru 12: R'da harici dosya(external file) olmadan bir tablo nasıl create edilebilir. 

myTable = data.frame() //  myTable adında bir dataframe oluşturulmalı

edit(myTable)              //Oluşturulan dataframe edit() fonksiyonu ile istenildiği şekilde bir tablo oluşturulabilir.

Soru 13:R'da kaç tane sıralama algoritması var?

Cevap 13:Aşağıda görüldüğü üzere 5 tane sıralama algoritması var

-Buble Sort
-Selection Sort
-Merge Sort
-Quic Sort
-Bucket Sort 

Soru 14:R'da data'yı nasıl sıralarsın?

Cevap 14:Aşağıdaki örnekte R üzerinde bulunan "mtcars" verisi kullanılarak gösterilmektedir.
 attach(mtcars)
 mtcars[order(mpg),] 

Şükrü ERGÜNTOP

Author & Editor

Bilecik Şeyh Edebali Üniversitesi Bilgisayar Mühendisi mezunuyum 2015 yılından beri Sigorta Bilgi ve Gözetim Merkezinde İş Zekası alanında çalışmaktayım

0 yorum:

Yorum Gönder