R - Hızlı Kılavuz

R, istatistiksel analiz, grafik gösterimi ve raporlama için bir programlama dili ve yazılım ortamıdır. R, Yeni Zelanda Auckland Üniversitesi'nde Ross Ihaka ve Robert Gentleman tarafından oluşturuldu ve şu anda R Geliştirme Çekirdek Ekibi tarafından geliştiriliyor.

R'nin özü, işlevler kullanarak modüler programlamanın yanı sıra dallanma ve döngüye izin veren yorumlanmış bir bilgisayar dilidir. R, verimlilik için C, C ++, .Net, Python veya FORTRAN dillerinde yazılmış prosedürlerle entegrasyon sağlar.

R, GNU Genel Kamu Lisansı altında ücretsiz olarak mevcuttur ve Linux, Windows ve Mac gibi çeşitli işletim sistemleri için önceden derlenmiş ikili sürümler sağlanır.

R, GNU tarzı bir kopya altında dağıtılan özgür bir yazılımdır ve GNU projesinin resmi bir parçasıdır. GNU S.

R Evrimi

R başlangıçta tarafından yazılmıştır Ross Ihaka ve Robert GentlemanAuckland, Yeni Zelanda'daki Auckland Üniversitesi İstatistik Bölümü'nde. R, 1993 yılında ilk kez ortaya çıktı.

  • Büyük bir grup insan, kod ve hata raporları göndererek R'ye katkıda bulundu.

  • 1997 ortasından beri R kaynak kodu arşivini değiştirebilen bir çekirdek grup ("R Çekirdek Ekibi") var.

R'nin Özellikleri

Daha önce belirtildiği gibi, R istatistiksel analiz, grafik gösterimi ve raporlama için bir programlama dili ve yazılım ortamıdır. Aşağıdakiler R'nin önemli özellikleridir -

  • R, koşullu ifadeler, döngüler, kullanıcı tanımlı özyinelemeli işlevler ve giriş ve çıkış olanaklarını içeren iyi geliştirilmiş, basit ve etkili bir programlama dilidir.

  • R'nin etkili bir veri işleme ve depolama tesisi vardır,

  • R, diziler, listeler, vektörler ve matrisler üzerindeki hesaplamalar için bir operatör paketi sağlar.

  • R, veri analizi için geniş, tutarlı ve entegre bir araç koleksiyonu sağlar.

  • R, veri analizi ve doğrudan bilgisayarda veya kağıtlara yazdırılması için grafiksel olanaklar sağlar.

Sonuç olarak, R, dünyanın en yaygın kullanılan istatistik programlama dilidir. Bu, veri bilimcilerin 1 numaralı tercihidir ve canlı ve yetenekli bir katılımcı topluluğu tarafından desteklenir. R, üniversitelerde öğretilir ve kritik iş uygulamalarında konuşlandırılır. Bu eğitim, size R programlamayı basit ve kolay adımlarla uygun örneklerle birlikte öğretecektir.

Yerel Ortam Kurulumu

Yine de ortamınızı R için kurmaya istekli iseniz, aşağıda verilen adımları takip edebilirsiniz.

Windows Kurulumu

R'nin Windows yükleyici sürümünü Windows için R-3.2.2'den (32/64 bit) indirebilir ve yerel bir dizine kaydedebilirsiniz.

"R-version-win.exe" adlı bir Windows yükleyicisi (.exe) olduğundan. Varsayılan ayarları kabul ederek yükleyiciyi çift tıklayıp çalıştırabilirsiniz. Windows'un 32 bit sürümü varsa, 32 bit sürümü yükler. Ancak pencereleriniz 64 bit ise, hem 32 bit hem de 64 bit sürümleri yükler.

Kurulumdan sonra, Programı Windows Program Dosyaları altında "R \ R3.2.2 \ bin \ i386 \ Rgui.exe" dizin yapısında çalıştırmak için simgeyi bulabilirsiniz. Bu simgeye tıklamak, R Programlama yapmak için R konsolu olan R-GUI'yi getirir.

Linux Kurulumu

R, Linux'un birçok sürümü için R Binaries konumunda bir ikili dosya olarak mevcuttur .

Linux kurma talimatı çeşitten türe değişir. Bu adımlar, belirtilen bağlantıda her bir Linux sürümü türünün altında belirtilmiştir. Ancak aceleniz varsa kullanabilirsinizyum R'yi aşağıdaki gibi yükleme komutu -

$ yum install R

Yukarıdaki komut, standart paketlerle birlikte R programlamanın temel işlevlerini yükleyecektir, yine de ek pakete ihtiyacınız vardır, ardından aşağıdaki gibi R komut istemini başlatabilirsiniz -

$ R
R version 3.2.0 (2015-04-16) -- "Full of  Ingredients"          
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many  contributors.                    
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
>

Artık, gerekli paketi yüklemek için R isteminde install komutunu kullanabilirsiniz. Örneğin, aşağıdaki komut yüklenecektirplotrix 3B grafikler için gerekli olan paket.

> install.packages("plotrix")

Bir kural olarak, bir "Merhaba, Dünya!" Yazarak R programlamayı öğrenmeye başlayacağız. programı. İhtiyaçlara bağlı olarak, programınızı yazmak için R komut isteminde programlayabilir veya bir R komut dosyası kullanabilirsiniz. İkisini de tek tek kontrol edelim.

R Komut İstemi

R ortamı kurulumuna sahip olduğunuzda, komut isteminize aşağıdaki komutu yazarak R komut isteminizi başlatmak kolaydır -

$ R

Bu, R yorumlayıcısını başlatacak ve aşağıdaki gibi programınızı yazmaya başlayabileceğiniz bir komut alacaksınız -

> myString <- "Hello, World!"
> print ( myString)
[1] "Hello, World!"

Buradaki ilk ifade, myString bir dize değişkenini tanımlar, burada "Merhaba, Dünya!" ve daha sonra, myString değişkeninde depolanan değeri yazdırmak için bir sonraki ifade print () kullanılır.

R Komut Dosyası Dosyası

Genellikle programınızı programlarınızı komut dosyası dosyalarına yazarak yaparsınız ve daha sonra bu komut dosyalarını komut isteminizde adı verilen R yorumlayıcısı yardımıyla çalıştırırsınız. Rscript. Öyleyse aşağıdaki kodu test.R adlı bir metin dosyasına aşağıdaki gibi yazmaya başlayalım -

# My first program in R Programming
myString <- "Hello, World!"

print ( myString)

Yukarıdaki kodu bir test.R dosyasına kaydedin ve aşağıda belirtildiği gibi Linux komut isteminde çalıştırın. Windows veya başka bir sistem kullanıyor olsanız bile, sözdizimi aynı kalacaktır.

$ Rscript test.R

Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu verir.

[1] "Hello, World!"

Yorumlar

Yorumlar, R programınızdaki yardımcı metin gibidir ve gerçek programınızı çalıştırırken yorumlayıcı tarafından yok sayılır. Tek yorum, ifadenin başında # kullanılarak şu şekilde yazılır -

# My first program in R Programming

R, çok satırlı yorumları desteklemez ancak aşağıdaki gibi bir numara yapabilirsiniz -

if(FALSE) {
   "This is a demo for multi-line comments and it should be put inside either a 
      single OR double quote"
}

myString <- "Hello, World!"
print ( myString)
[1] "Hello, World!"

Yukarıdaki yorumlar R yorumlayıcı tarafından yürütülecekse de, gerçek programınıza müdahale etmeyecektir. Bu tür yorumları tek veya çift tırnak içine koymalısınız.

Genel olarak, herhangi bir programlama dilinde programlama yaparken, çeşitli bilgileri depolamak için çeşitli değişkenler kullanmanız gerekir. Değişkenler, değerleri saklamak için ayrılmış bellek konumlarından başka bir şey değildir. Bu, bir değişken oluşturduğunuzda bellekte biraz yer ayırdığınız anlamına gelir.

Karakter, geniş karakter, tamsayı, kayan nokta, çift kayan nokta, Boole vb. Gibi çeşitli veri türlerinin bilgilerini depolamak isteyebilirsiniz. ayrılmış hafıza.

R'deki C ve java gibi diğer programlama dillerinin aksine, değişkenler bazı veri türleri olarak bildirilmez. Değişkenler R-Nesneleri ile atanır ve R-nesnesinin veri türü değişkenin veri türü olur. Pek çok R-nesnesi türü vardır. Sık kullanılanlar -

  • Vectors
  • Lists
  • Matrices
  • Arrays
  • Factors
  • Veri Çerçeveleri

Bu nesnelerin en basiti vector objectve altı vektör sınıfı olarak da adlandırılan bu atomik vektörlerin altı veri türü vardır. Diğer R-Nesneleri atomik vektörler üzerine inşa edilmiştir.

Veri tipi Misal Doğrulayın
Mantıklı DOĞRU YANLIŞ
v <- TRUE 
print(class(v))

aşağıdaki sonucu verir -

[1] "logical"
Sayısal 12,3, 5, 999
v <- 23.5
print(class(v))

aşağıdaki sonucu verir -

[1] "numeric"
Tamsayı 2L, 34L, 0L
v <- 2L
print(class(v))

aşağıdaki sonucu verir -

[1] "integer"
Karmaşık 3 + 2i
v <- 2+5i
print(class(v))

aşağıdaki sonucu verir -

[1] "complex"
Karakter "a", "iyi", "DOĞRU", "23, 4"
v <- "TRUE"
print(class(v))

aşağıdaki sonucu verir -

[1] "character"
Çiğ "Merhaba" 48 65 6c 6c 6f olarak saklanır
v <- charToRaw("Hello")
print(class(v))

aşağıdaki sonucu verir -

[1] "raw"

R programlamada, çok temel veri türleri adı verilen R nesneleridir. vectorsyukarıda gösterildiği gibi farklı sınıfların unsurlarını barındıran. Lütfen R'de sınıf sayısının yalnızca yukarıdaki altı türle sınırlı olmadığını unutmayın. Örneğin, birçok atomik vektör kullanabilir ve sınıfı dizi olacak bir dizi oluşturabiliriz.

Vektörler

Birden fazla elemanlı vektör oluşturmak istediğinizde, kullanmalısınız c() işlevi, öğeleri bir vektörde birleştirmek anlamına gelir.

# Create a vector.
apple <- c('red','green',"yellow")
print(apple)

# Get the class of the vector.
print(class(apple))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "red"    "green"  "yellow"
[1] "character"

Listeler

Bir liste, içinde vektörler, fonksiyonlar ve hatta içindeki başka bir liste gibi birçok farklı türde öğe içerebilen bir R-nesnesidir.

# Create a list.
list1 <- list(c(2,5,3),21.3,sin)

# Print the list.
print(list1)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[[1]]
[1] 2 5 3

[[2]]
[1] 21.3

[[3]]
function (x)  .Primitive("sin")

Matrisler

Bir matris, iki boyutlu dikdörtgen bir veri kümesidir. Matris işlevine bir vektör girdisi kullanılarak oluşturulabilir.

# Create a matrix.
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[,1] [,2] [,3]
[1,] "a"  "a"  "b" 
[2,] "c"  "b"  "a"

Diziler

Matrisler iki boyutla sınırlıyken, diziler herhangi bir sayıda boyutta olabilir. Dizi işlevi, gerekli sayıda boyut oluşturan bir dim niteliği alır. Aşağıdaki örnekte, her biri 3x3 matris olan iki elemanlı bir dizi oluşturuyoruz.

# Create an array.
a <- array(c('green','yellow'),dim = c(3,3,2))
print(a)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

, , 1

     [,1]     [,2]     [,3]    
[1,] "green"  "yellow" "green" 
[2,] "yellow" "green"  "yellow"
[3,] "green"  "yellow" "green" 

, , 2

     [,1]     [,2]     [,3]    
[1,] "yellow" "green"  "yellow"
[2,] "green"  "yellow" "green" 
[3,] "yellow" "green"  "yellow"

Faktörler

Faktörler, bir vektör kullanılarak oluşturulan r nesneleridir. Vektörü, vektördeki öğelerin farklı değerleriyle birlikte etiketler olarak depolar. Giriş vektöründeki sayısal veya karakter veya Boole vb. Olmasına bakılmaksızın etiketler her zaman karakterdir. İstatistiksel modellemede faydalıdırlar.

Faktörler kullanılarak oluşturulur factor()işlevi. nlevels fonksiyonlar seviye sayısını verir.

# Create a vector.
apple_colors <- c('green','green','yellow','red','red','red','green')

# Create a factor object.
factor_apple <- factor(apple_colors)

# Print the factor.
print(factor_apple)
print(nlevels(factor_apple))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] green  green  yellow red    red    red    green 
Levels: green red yellow
[1] 3

Veri Çerçeveleri

Veri çerçeveleri tablo veri nesneleridir. Veri çerçevesindeki bir matrisin aksine, her sütun farklı veri modları içerebilir. İlk sütun sayısal olabilirken, ikinci sütun karakter ve üçüncü sütun mantıksal olabilir. Eşit uzunluktaki vektörlerin bir listesidir.

Veri Çerçeveleri, data.frame() işlevi.

# Create the data frame.
BMI <- 	data.frame(
   gender = c("Male", "Male","Female"), 
   height = c(152, 171.5, 165), 
   weight = c(81,93, 78),
   Age = c(42,38,26)
)
print(BMI)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

gender height weight Age
1   Male  152.0     81  42
2   Male  171.5     93  38
3 Female  165.0     78  26

Bir değişken, programlarımızın değiştirebileceği adlandırılmış depolama alanı sağlar. R'deki bir değişken, bir atomik vektörü, atomik vektörler grubunu veya birçok Robject'in bir kombinasyonunu depolayabilir. Geçerli bir değişken adı harflerden, sayılardan ve nokta veya altı çizili karakterlerden oluşur. Değişken adı bir harfle veya noktadan sonra bir sayı gelmeden başlar.

Değişken ismi Geçerlilik Nedeni
var_name2. geçerli Harf, sayı, nokta ve alt çizgi içerir
var_name% Geçersiz '%' Karakterine sahiptir. Yalnızca nokta (.) Ve alt çizgiye izin verilir.
2var_name geçersiz Bir sayı ile başlar

.var_name,

var.name

geçerli Bir nokta (.) İle başlayabilir ancak noktanın (.) Ardından bir sayı gelmemelidir.
.2var_name geçersiz Başlangıç ​​noktasının ardından onu geçersiz kılan bir sayı gelir.
_var_name geçersiz Geçerli olmayan _ ile başlar

Değişken Atama

Değişkenler, sola, sağa ve operatöre eşit kullanılarak değerler atanabilir. Değişkenlerin değerleri kullanılarak yazdırılabilirprint() veya cat()işlevi. cat() işlevi, birden çok öğeyi sürekli bir baskı çıktısında birleştirir.

# Assignment using equal operator.
var.1 = c(0,1,2,3)           

# Assignment using leftward operator.
var.2 <- c("learn","R")   

# Assignment using rightward operator.   
c(TRUE,1) -> var.3           

print(var.1)
cat ("var.1 is ", var.1 ,"\n")
cat ("var.2 is ", var.2 ,"\n")
cat ("var.3 is ", var.3 ,"\n")

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 0 1 2 3
var.1 is  0 1 2 3 
var.2 is  learn R 
var.3 is  1 1

Note- c (DOĞRU, 1) vektörü mantıksal ve sayısal sınıfın bir karışımına sahiptir. Dolayısıyla mantıksal sınıf, 1 olarak DOĞRU yapan sayısal sınıfa zorlanır.

Bir Değişkenin Veri Türü

R'de, bir değişkenin kendisi herhangi bir veri türünden bildirilmez, bunun yerine kendisine atanan R nesnesinin veri türünü alır. Dolayısıyla R'ye dinamik olarak yazılmış bir dil denir, bu da bir değişkenin aynı değişkenin veri türünü bir programda kullanırken tekrar tekrar değiştirebileceğimiz anlamına gelir.

var_x <- "Hello"
cat("The class of var_x is ",class(var_x),"\n")

var_x <- 34.5
cat("  Now the class of var_x is ",class(var_x),"\n")

var_x <- 27L
cat("   Next the class of var_x becomes ",class(var_x),"\n")

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

The class of var_x is  character 
   Now the class of var_x is  numeric 
      Next the class of var_x becomes  integer

Değişkenleri Bulmak

Çalışma alanında şu anda mevcut olan tüm değişkenleri bilmek için ls()işlevi. Ayrıca ls () işlevi, değişken adlarını eşleştirmek için kalıpları kullanabilir.

print(ls())

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "my var"     "my_new_var" "my_var"     "var.1"      
[5] "var.2"      "var.3"      "var.name"   "var_name2."
[9] "var_x"      "varname"

Note - Ortamınızda hangi değişkenlerin bildirildiğine bağlı olarak örnek bir çıktıdır.

Ls () işlevi, değişken adlarını eşleştirmek için kalıpları kullanabilir.

# List the variables starting with the pattern "var".
print(ls(pattern = "var"))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "my var"     "my_new_var" "my_var"     "var.1"      
[5] "var.2"      "var.3"      "var.name"   "var_name2."
[9] "var_x"      "varname"

İle başlayan değişkenler dot(.) gizlidirler, ls () işlevinin "all.names = TRUE" argümanı kullanılarak listelenebilir.

print(ls(all.name = TRUE))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] ".cars"        ".Random.seed" ".var_name"    ".varname"     ".varname2"   
[6] "my var"       "my_new_var"   "my_var"       "var.1"        "var.2"        
[11]"var.3"        "var.name"     "var_name2."   "var_x"

Değişkenleri Silme

Değişkenler kullanılarak silinebilir rm()işlevi. Aşağıda var.3 değişkenini siliyoruz. Baskı sırasında değişken hatanın değeri atılır.

rm(var.3)
print(var.3)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "var.3"
Error in print(var.3) : object 'var.3' not found

Tüm değişkenler kullanılarak silinebilir rm() ve ls() birlikte çalışır.

rm(list = ls())
print(ls())

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

character(0)

Operatör, derleyiciye belirli matematiksel veya mantıksal işlemleri gerçekleştirmesini söyleyen bir semboldür. R dili yerleşik operatörler açısından zengindir ve aşağıdaki operatör türlerini sağlar.

Operatör Türleri

R programlamada aşağıdaki operatör türlerine sahibiz -

  • Aritmetik operatörler
  • İlişkisel Operatörler
  • Mantıksal operatörler
  • Atama Operatörleri
  • Çeşitli Operatörler

Aritmetik operatörler

Aşağıdaki tablo, R dili tarafından desteklenen aritmetik operatörleri göstermektedir. Operatörler, vektörün her bir elemanı üzerinde hareket eder.

Şebeke Açıklama Misal
+ İki vektör ekler
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v+t)

aşağıdaki sonucu verir -

[1] 10.0  8.5  10.0
- İlk vektörden ikinci vektörü çıkarır.
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v-t)

aşağıdaki sonucu verir -

[1] -6.0  2.5  2.0
* Her iki vektörü de çarpar
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v*t)

aşağıdaki sonucu verir -

[1] 16.0 16.5 24.0
/ İlk vektörü ikinciye bölün
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v/t)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 0.250000 1.833333 1.500000
%% İlk vektörün kalanını ikinciyle birlikte verin
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v%%t)

aşağıdaki sonucu verir -

[1] 2.0 2.5 2.0
% /% Birinci vektörün ikinciye (bölüm) bölünmesinin sonucu
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v%/%t)

aşağıdaki sonucu verir -

[1] 0 1 1
^ İkinci vektörün üssüne yükseltilen ilk vektör
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v^t)

aşağıdaki sonucu verir -

[1]  256.000  166.375 1296.000

İlişkisel Operatörler

Aşağıdaki tablo, R dili tarafından desteklenen ilişkisel operatörleri göstermektedir. İlk vektörün her bir elemanı, ikinci vektörün karşılık gelen elemanıyla karşılaştırılır. Karşılaştırmanın sonucu bir Boole değeridir.

Şebeke Açıklama Misal
> İlk vektörün her bir öğesinin ikinci vektörün karşılık gelen öğesinden büyük olup olmadığını kontrol eder.
v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v>t)

aşağıdaki sonucu verir -

[1] FALSE  TRUE FALSE FALSE
< İlk vektörün her bir öğesinin, ikinci vektörün karşılık gelen öğesinden daha küçük olup olmadığını kontrol eder.
v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v < t)

aşağıdaki sonucu verir -

[1]  TRUE FALSE  TRUE FALSE
== İlk vektörün her bir öğesinin, ikinci vektörün karşılık gelen öğesine eşit olup olmadığını kontrol eder.
v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v == t)

aşağıdaki sonucu verir -

[1] FALSE FALSE FALSE  TRUE
<= İlk vektörün her bir öğesinin, ikinci vektörün karşılık gelen öğesinden küçük veya ona eşit olup olmadığını kontrol eder.
v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v<=t)

aşağıdaki sonucu verir -

[1]  TRUE FALSE  TRUE  TRUE
> = İlk vektörün her bir öğesinin, ikinci vektörün karşılık gelen öğesinden büyük veya ona eşit olup olmadığını kontrol eder.
v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v>=t)

aşağıdaki sonucu verir -

[1] FALSE  TRUE FALSE  TRUE
! = İlk vektörün her bir elemanının, ikinci vektörün karşılık gelen elemanına eşit olup olmadığını kontrol eder.
v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v!=t)

aşağıdaki sonucu verir -

[1]  TRUE  TRUE  TRUE FALSE

Mantıksal operatörler

Aşağıdaki tablo, R dili tarafından desteklenen mantıksal operatörleri göstermektedir. Yalnızca mantıksal, sayısal veya karmaşık tipteki vektörler için geçerlidir. 1'den büyük tüm sayılar, DOĞRU mantıksal değer olarak kabul edilir.

İlk vektörün her bir elemanı, ikinci vektörün karşılık gelen elemanıyla karşılaştırılır. Karşılaştırmanın sonucu bir Boole değeridir.

Şebeke Açıklama Misal
& Element-wise Logical AND operatörü olarak adlandırılır. İlk vektörün her bir elemanını ikinci vektörün karşılık gelen elemanıyla birleştirir ve her iki eleman da TRUE ise bir çıktı TRUE verir.
v <- c(3,1,TRUE,2+3i)
t <- c(4,1,FALSE,2+3i)
print(v&t)

aşağıdaki sonucu verir -

[1]  TRUE  TRUE FALSE  TRUE
| Element-wise Logical OR operatörü olarak adlandırılır. İlk vektörün her bir elemanını ikinci vektörün karşılık gelen elemanıyla birleştirir ve elemanlardan biri TRUE ise bir çıktı TRUE verir.
v <- c(3,0,TRUE,2+2i)
t <- c(4,0,FALSE,2+3i)
print(v|t)

aşağıdaki sonucu verir -

[1]  TRUE FALSE  TRUE  TRUE
! Mantıksal DEĞİL operatörü olarak adlandırılır. Vektörün her bir öğesini alır ve zıt mantıksal değeri verir.
v <- c(3,0,TRUE,2+2i)
print(!v)

aşağıdaki sonucu verir -

[1] FALSE  TRUE FALSE FALSE

Mantıksal operatör && ve || vektörlerin sadece ilk elemanını dikkate alır ve çıktı olarak tek elemandan oluşan bir vektör verir.

Şebeke Açıklama Misal
&& Mantıksal AND operatörü çağrıldı. Her iki vektörün ilk elemanını alır ve sadece her ikisi de DOĞRU ise DOĞRU verir.
v <- c(3,0,TRUE,2+2i)
t <- c(1,3,TRUE,2+3i)
print(v&&t)

aşağıdaki sonucu verir -

[1] TRUE
|| Mantıksal VEYA operatörü çağrıldı. Her iki vektörün de ilk elemanını alır ve bunlardan biri DOĞRU ise DOĞRU verir.
v <- c(0,0,TRUE,2+2i)
t <- c(0,3,TRUE,2+3i)
print(v||t)

aşağıdaki sonucu verir -

[1] FALSE

Atama Operatörleri

Bu operatörler, vektörlere değer atamak için kullanılır.

Şebeke Açıklama Misal

<-

veya

=

veya

<< -

Sol Atama olarak adlandırılan
v1 <- c(3,1,TRUE,2+3i)
v2 <<- c(3,1,TRUE,2+3i)
v3 = c(3,1,TRUE,2+3i)
print(v1)
print(v2)
print(v3)

aşağıdaki sonucu verir -

[1] 3+0i 1+0i 1+0i 2+3i
[1] 3+0i 1+0i 1+0i 2+3i
[1] 3+0i 1+0i 1+0i 2+3i

->

veya

- >>

Sağ Atama Denir
c(3,1,TRUE,2+3i) -> v1
c(3,1,TRUE,2+3i) ->> v2 
print(v1)
print(v2)

aşağıdaki sonucu verir -

[1] 3+0i 1+0i 1+0i 2+3i
[1] 3+0i 1+0i 1+0i 2+3i

Çeşitli Operatörler

Bu operatörler, genel matematiksel veya mantıksal hesaplama için değil, belirli bir amaç için kullanılır.

Şebeke Açıklama Misal
: Kolon operatörü. Bir vektör için sırayla sayı serileri oluşturur.
v <- 2:8
print(v)

aşağıdaki sonucu verir -

[1] 2 3 4 5 6 7 8
%içinde% Bu operatör, bir elemanın bir vektöre ait olup olmadığını belirlemek için kullanılır.
v1 <- 8
v2 <- 12
t <- 1:10
print(v1 %in% t) 
print(v2 %in% t)

aşağıdaki sonucu verir -

[1] TRUE
[1] FALSE
% *% Bu operatör, bir matrisi transpoze ile çarpmak için kullanılır.
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
t = M %*% t(M)
print(t)

aşağıdaki sonucu verir -

[,1] [,2]
[1,]   65   82
[2,]   82  117

Karar verme yapıları, programcının, program tarafından değerlendirilecek veya test edilecek bir veya daha fazla koşulu, koşulun geçerli olduğu belirlenirse yürütülecek bir ifade veya ifadeyle birlikte belirtmesini gerektirir. trueve isteğe bağlı olarak, koşul olarak belirlenirse yürütülecek diğer ifadeler false.

Aşağıda, programlama dillerinin çoğunda bulunan tipik bir karar verme yapısının genel biçimi verilmiştir -

R, aşağıdaki türden karar verme beyanları sağlar. Ayrıntılarını kontrol etmek için aşağıdaki bağlantıları tıklayın.

Sr.No. Açıklama ve Açıklama
1 eğer ifadesi

Bir if ifade, bir veya daha fazla ifadenin izlediği bir Boole ifadesinden oluşur.

2 if ... else ifadesi

Bir if ifadenin ardından isteğe bağlı bir else Boolean ifadesi yanlış olduğunda yürütülen ifade.

3 anahtar deyimi

Bir switch ifadesi, bir değişkenin bir değerler listesine karşı eşitlik açısından test edilmesine izin verir.

Bir kod bloğunu birkaç kez çalıştırmanız gereken bir durum olabilir. Genelde ifadeler sırayla yürütülür. Bir fonksiyondaki ilk ifade önce çalıştırılır, ardından ikincisi yapılır ve bu böyle devam eder.

Programlama dilleri, daha karmaşık yürütme yollarına izin veren çeşitli kontrol yapıları sağlar.

Bir döngü deyimi, bir deyimi veya deyim grubunu birden çok kez yürütmemize izin verir ve aşağıdaki, programlama dillerinin çoğunda bir döngü ifadesinin genel biçimidir -

R programlama dili, döngü gereksinimlerini karşılamak için aşağıdaki döngü türlerini sağlar. Ayrıntılarını kontrol etmek için aşağıdaki bağlantıları tıklayın.

Sr.No. Döngü Tipi ve Açıklaması
1 döngüyü tekrarla

Bir dizi ifadeyi birden çok kez yürütür ve döngü değişkenini yöneten kodu kısaltır.

2 döngü sırasında

Belirli bir koşul doğruyken bir ifadeyi veya ifade grubunu tekrarlar. Döngü gövdesini çalıştırmadan önce koşulu test eder.

3 döngü için

Döngü gövdesinin sonundaki koşulu test etmesi dışında bir while ifadesi gibi.

Döngü Kontrol İfadeleri

Döngü kontrol ifadeleri, yürütmeyi normal sırasından değiştirir. Yürütme bir kapsam bıraktığında, bu kapsamda oluşturulan tüm otomatik nesneler yok edilir.

R, aşağıdaki kontrol ifadelerini destekler. Ayrıntılarını kontrol etmek için aşağıdaki bağlantıları tıklayın.

Sr.No. Kontrol İfadesi ve Açıklama
1 break ifadesi

Sonlandırır loop deyimi ve yürütmeyi döngüden hemen sonra deyime aktarır.

2 Sonraki ifade

next deyimi, R anahtarının davranışını simüle eder.

Bir işlev, belirli bir görevi gerçekleştirmek için birlikte düzenlenen bir dizi ifadedir. R'nin çok sayıda yerleşik işlevi vardır ve kullanıcı kendi işlevlerini oluşturabilir.

R'de, bir işlev bir nesnedir, bu nedenle R yorumlayıcısı, işlevin eylemleri gerçekleştirmesi için gerekli olabilecek argümanlarla birlikte işlevi işleve geçirebilir.

İşlev sırayla görevini yerine getirir ve kontrolü yorumlayıcıya ve diğer nesnelerde saklanabilecek herhangi bir sonucu döndürür.

İşlev Tanımı

Anahtar sözcük kullanılarak bir R işlevi oluşturulur. function. Bir R işlevi tanımının temel sözdizimi aşağıdaki gibidir -

function_name <- function(arg_1, arg_2, ...) {
   Function body 
}

Fonksiyon Bileşenleri

Bir işlevin farklı bölümleri şunlardır:

  • Function Name- Bu, işlevin gerçek adıdır. Bu isimde bir nesne olarak R ortamında depolanır.

  • Arguments- Bir argüman yer tutucudur. Bir işlev çağrıldığında, bağımsız değişkene bir değer iletirsiniz. Bağımsız değişkenler isteğe bağlıdır; yani, bir işlev bağımsız değişken içermeyebilir. Ayrıca argümanlar varsayılan değerlere sahip olabilir.

  • Function Body - İşlev gövdesi, işlevin ne yaptığını tanımlayan bir dizi deyim içerir.

  • Return Value - Bir işlevin dönüş değeri, değerlendirilecek işlev gövdesindeki son ifadedir.

R'nin birçok in-builtönce tanımlanmadan programda doğrudan çağrılabilen işlevler. Ayrıca kendi işlevlerimizi oluşturabilir ve kullanabiliriz:user defined fonksiyonlar.

Yerleşik İşlev

Yerleşik işlevlerin basit örnekleri seq(), mean(), max(), sum(x) ve paste(...)vb. Kullanıcı tarafından yazılan programlar tarafından doğrudan çağrılırlar. En yaygın kullanılan R işlevlerine başvurabilirsiniz .

# Create a sequence of numbers from 32 to 44.
print(seq(32,44))

# Find mean of numbers from 25 to 82.
print(mean(25:82))

# Find sum of numbers frm 41 to 68.
print(sum(41:68))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 32 33 34 35 36 37 38 39 40 41 42 43 44
[1] 53.5
[1] 1526

Kullanıcı tanımlı İşlev

R'de kullanıcı tanımlı işlevler oluşturabiliriz. Bunlar bir kullanıcının ne istediğine özgüdür ve bir kez oluşturulduktan sonra yerleşik işlevler gibi kullanılabilirler. Aşağıda bir işlevin nasıl oluşturulup kullanıldığına dair bir örnek verilmiştir.

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}

Bir Fonksiyon Çağırma

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}

# Call the function new.function supplying 6 as an argument.
new.function(6)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36

Bağımsız Değişken Olmadan Bir Fonksiyonu Çağırma

# Create a function without an argument.
new.function <- function() {
   for(i in 1:5) {
      print(i^2)
   }
}	

# Call the function without supplying an argument.
new.function()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25

Bağımsız Değişken Değerleri İçeren Bir Fonksiyonu Çağırma (konuma ve ada göre)

Bir işlev çağrısına yönelik argümanlar, işlevde tanımlananlarla aynı sırada sağlanabilir veya farklı bir sırayla sağlanabilir, ancak argümanların adlarına atanabilir.

# Create a function with arguments.
new.function <- function(a,b,c) {
   result <- a * b + c
   print(result)
}

# Call the function by position of arguments.
new.function(5,3,11)

# Call the function by names of the arguments.
new.function(a = 11, b = 5, c = 3)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 26
[1] 58

Varsayılan Bağımsız Değişkenle Bir Fonksiyonu Çağırma

Fonksiyon tanımındaki argümanların değerini tanımlayabilir ve varsayılan sonucu almak için herhangi bir argüman sağlamadan fonksiyonu çağırabiliriz. Ancak argümanın yeni değerlerini sağlayarak bu tür işlevleri çağırabilir ve varsayılan olmayan bir sonuç elde edebiliriz.

# Create a function with arguments.
new.function <- function(a = 3, b = 6) {
   result <- a * b
   print(result)
}

# Call the function without giving any argument.
new.function()

# Call the function with giving new values of the argument.
new.function(9,5)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 18
[1] 45

Fonksiyonun Tembel Değerlendirilmesi

İşlevlere yönelik argümanlar tembel olarak değerlendirilir, yani yalnızca işlev gövdesi tarafından ihtiyaç duyulduğunda değerlendirilir.

# Create a function with arguments.
new.function <- function(a, b) {
   print(a^2)
   print(a)
   print(b)
}

# Evaluate the function without supplying one of the arguments.
new.function(6)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 36
[1] 6
Error in print(b) : argument "b" is missing, with no default

Bir çift tek tırnak veya çift tırnak içinde yazılan herhangi bir değer, bir dizge olarak kabul edilir. Dahili olarak R, tek tırnakla oluşturduğunuzda bile her dizeyi çift tırnak içinde saklar.

İp Yapımında Uygulanan Kurallar

  • Bir dizenin başındaki ve sonundaki tırnaklar hem çift tırnak hem de tek tırnak olmalıdır. Karıştırılamazlar.

  • Tek tırnakla başlayıp biten bir dizeye çift tırnak eklenebilir.

  • Çift tırnak ile başlayan ve biten bir dizeye tek tırnak eklenebilir.

  • Çift tırnak ile başlayan ve biten bir dizeye çift tırnak eklenemez.

  • Tek tırnak ile başlayan ve biten bir dizeye tek tırnak eklenemez.

Geçerli Dizelerin Örnekleri

Aşağıdaki örnekler, R'de bir dize oluşturmayla ilgili kuralları netleştirir.

a <- 'Start and end with single quote'
print(a)

b <- "Start and end with double quotes"
print(b)

c <- "single quote ' in between double quotes"
print(c)

d <- 'Double quotes " in between single quote'
print(d)

Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı alıyoruz -

[1] "Start and end with single quote"
[1] "Start and end with double quotes"
[1] "single quote ' in between double quote"
[1] "Double quote \" in between single quote"

Geçersiz Dizelerin Örnekleri

e <- 'Mixed quotes" 
print(e)

f <- 'Single quote ' inside single quote'
print(f)

g <- "Double quotes " inside double quotes"
print(g)

Komut dosyasını çalıştırdığımızda, aşağıdaki sonuçları vermede başarısız oluyor.

Error: unexpected symbol in:
"print(e)
f <- 'Single"
Execution halted

Dize Manipülasyonu

Dizeleri Birleştirme - yapıştır () işlevi

R'deki birçok dize, paste()işlevi. Bir araya getirilmesi için herhangi bir sayıda argüman gerekebilir.

Sözdizimi

Yapıştırma işlevi için temel sözdizimi -

paste(..., sep = " ", collapse = NULL)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • ... birleştirilecek herhangi bir sayıda argümanı temsil eder.

  • sepbağımsız değişkenler arasındaki herhangi bir ayırıcıyı temsil eder. İsteğe bağlıdır.

  • collapseiki dizge arasındaki boşluğu ortadan kaldırmak için kullanılır. Ancak bir dizenin iki kelimesi arasındaki boşluk değil.

Misal

a <- "Hello"
b <- 'How'
c <- "are you? "

print(paste(a,b,c))

print(paste(a,b,c, sep = "-"))

print(paste(a,b,c, sep = "", collapse = ""))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "Hello How are you? "
[1] "Hello-How-are you? "
[1] "HelloHoware you? "

Sayıları ve dizeleri biçimlendirme - format () işlevi

Sayılar ve dizeler kullanılarak belirli bir stile göre biçimlendirilebilir format() işlevi.

Sözdizimi

Biçim işlevinin temel sözdizimi -

format(x, digits, nsmall, scientific, width, justify = c("left", "right", "centre", "none"))

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x vektör girdisidir.

  • digits görüntülenen toplam basamak sayısıdır.

  • nsmall ondalık ayırıcının sağındaki minimum basamak sayısıdır.

  • scientific bilimsel gösterimi görüntülemek için TRUE olarak ayarlanmıştır.

  • width başlangıçta boşlukları doldurarak görüntülenecek minimum genişliği belirtir.

  • justify dizenin sola, sağa veya ortadaki görüntüsüdür.

Misal

# Total number of digits displayed. Last digit rounded off.
result <- format(23.123456789, digits = 9)
print(result)

# Display numbers in scientific notation.
result <- format(c(6, 13.14521), scientific = TRUE)
print(result)

# The minimum number of digits to the right of the decimal point.
result <- format(23.47, nsmall = 5)
print(result)

# Format treats everything as a string.
result <- format(6)
print(result)

# Numbers are padded with blank in the beginning for width.
result <- format(13.7, width = 6)
print(result)

# Left justify strings.
result <- format("Hello", width = 8, justify = "l")
print(result)

# Justfy string with center.
result <- format("Hello", width = 8, justify = "c")
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "23.1234568"
[1] "6.000000e+00" "1.314521e+01"
[1] "23.47000"
[1] "6"
[1] "  13.7"
[1] "Hello   "
[1] " Hello  "

Bir dizedeki karakter sayısını sayma - nchar () işlevi

Bu işlev, bir dizedeki boşluklar dahil olmak üzere karakterlerin sayısını sayar.

Sözdizimi

Nchar () işlevi için temel sözdizimi -

nchar(x)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x vektör girdisidir.

Misal

result <- nchar("Count the number of characters")
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 30

Durum değiştirme - toupper () ve tolower () işlevleri

Bu işlevler, bir dizedeki karakterlerin durumunu değiştirir.

Sözdizimi

Toupper () & tolower () işlevinin temel sözdizimi -

toupper(x)
tolower(x)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x vektör girdisidir.

Misal

# Changing to Upper case.
result <- toupper("Changing To Upper")
print(result)

# Changing to lower case.
result <- tolower("Changing To Lower")
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "CHANGING TO UPPER"
[1] "changing to lower"

Bir dizenin parçalarını çıkarma - substring () işlevi

Bu işlev bir String'in parçalarını çıkarır.

Sözdizimi

Substring () işlevi için temel sözdizimi -

substring(x,first,last)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x karakter vektör girdisidir.

  • first ayıklanacak ilk karakterin konumudur.

  • last ayıklanacak son karakterin konumudur.

Misal

# Extract characters from 5th to 7th position.
result <- substring("Extract", 5, 7)
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "act"

Vektörler en temel R veri nesneleridir ve altı tür atomik vektör vardır. Mantıksal, tamsayı, çift, karmaşık, karakter ve ham.

Vektör Oluşturma

Tek Eleman Vektör

R'ye sadece bir değer yazdığınızda bile, 1 uzunluğunda bir vektör olur ve yukarıdaki vektör türlerinden birine aittir.

# Atomic vector of type character.
print("abc");

# Atomic vector of type double.
print(12.5)

# Atomic vector of type integer.
print(63L)

# Atomic vector of type logical.
print(TRUE)

# Atomic vector of type complex.
print(2+3i)

# Atomic vector of type raw.
print(charToRaw('hello'))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "abc"
[1] 12.5
[1] 63
[1] TRUE
[1] 2+3i
[1] 68 65 6c 6c 6f

Birden çok öğe Vektör

Using colon operator with numeric data

# Creating a sequence from 5 to 13.
v <- 5:13
print(v)

# Creating a sequence from 6.6 to 12.6.
v <- 6.6:12.6
print(v)

# If the final element specified does not belong to the sequence then it is discarded.
v <- 3.8:11.4
print(v)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1]  5  6  7  8  9 10 11 12 13
[1]  6.6  7.6  8.6  9.6 10.6 11.6 12.6
[1]  3.8  4.8  5.8  6.8  7.8  8.8  9.8 10.8

Using sequence (Seq.) operator

# Create vector with elements from 5 to 9 incrementing by 0.4.
print(seq(5, 9, by = 0.4))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 5.0 5.4 5.8 6.2 6.6 7.0 7.4 7.8 8.2 8.6 9.0

Using the c() function

Karakter olmayan değerler, öğelerden biri bir karakterse, karakter türüne zorlanır.

# The logical and numeric values are converted to characters.
s <- c('apple','red',5,TRUE)
print(s)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "apple" "red"   "5"     "TRUE"

Vektör Öğelerine Erişim

Bir Vector öğelerine indeksleme kullanılarak erişilir. [ ] bracketsindeksleme için kullanılır. İndeksleme, konum 1 ile başlar. İndekste negatif bir değer verilmesi, o öğeyi sonuçtan düşürür.TRUE, FALSE veya 0 ve 1 indeksleme için de kullanılabilir.

# Accessing vector elements using position.
t <- c("Sun","Mon","Tue","Wed","Thurs","Fri","Sat")
u <- t[c(2,3,6)]
print(u)

# Accessing vector elements using logical indexing.
v <- t[c(TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)]
print(v)

# Accessing vector elements using negative indexing.
x <- t[c(-2,-5)]
print(x)

# Accessing vector elements using 0/1 indexing.
y <- t[c(0,0,0,0,0,0,1)]
print(y)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "Mon" "Tue" "Fri"
[1] "Sun" "Fri"
[1] "Sun" "Tue" "Wed" "Fri" "Sat"
[1] "Sun"

Vektör Manipülasyonu

Vektör aritmetiği

Aynı uzunlukta iki vektör eklenebilir, çıkarılabilir, çarpılabilir veya bölünerek sonuç vektör çıktısı olarak alınabilir.

# Create two vectors.
v1 <- c(3,8,4,5,0,11)
v2 <- c(4,11,0,8,1,2)

# Vector addition.
add.result <- v1+v2
print(add.result)

# Vector subtraction.
sub.result <- v1-v2
print(sub.result)

# Vector multiplication.
multi.result <- v1*v2
print(multi.result)

# Vector division.
divi.result <- v1/v2
print(divi.result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1]  7 19  4 13  1 13
[1] -1 -3  4 -3 -1  9
[1] 12 88  0 40  0 22
[1] 0.7500000 0.7272727       Inf 0.6250000 0.0000000 5.5000000

Vektör Öğesi Geri Dönüşümü

Eşit olmayan uzunluktaki iki vektöre aritmetik işlemler uygularsak, daha kısa vektörün elemanları işlemleri tamamlamak için geri dönüştürülür.

v1 <- c(3,8,4,5,0,11)
v2 <- c(4,11)
# V2 becomes c(4,11,4,11,4,11)

add.result <- v1+v2
print(add.result)

sub.result <- v1-v2
print(sub.result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1]  7 19  8 16  4 22
[1] -1 -3  0 -6 -4  0

Vektör Eleman Sıralama

Bir vektördeki öğeler, sort() işlevi.

v <- c(3,8,4,5,0,11, -9, 304)

# Sort the elements of the vector.
sort.result <- sort(v)
print(sort.result)

# Sort the elements in the reverse order.
revsort.result <- sort(v, decreasing = TRUE)
print(revsort.result)

# Sorting character vectors.
v <- c("Red","Blue","yellow","violet")
sort.result <- sort(v)
print(sort.result)

# Sorting character vectors in reverse order.
revsort.result <- sort(v, decreasing = TRUE)
print(revsort.result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1]  -9   0   3   4   5   8  11 304
[1] 304  11   8   5   4   3   0  -9
[1] "Blue"   "Red"    "violet" "yellow"
[1] "yellow" "violet" "Red"    "Blue"

Listeler, sayılar, dizeler, vektörler ve içindeki başka bir liste gibi farklı türdeki öğeleri içeren R nesneleridir. Bir liste, öğeleri olarak bir matris veya bir işlev de içerebilir. Liste kullanılarak oluşturulurlist() işlevi.

Liste Oluşturmak

Aşağıda dizeler, sayılar, vektörler ve mantıksal değerler içeren bir liste oluşturmak için bir örnek verilmiştir.

# Create a list containing strings, numbers, vectors and a logical
# values.
list_data <- list("Red", "Green", c(21,32,11), TRUE, 51.23, 119.1)
print(list_data)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[[1]]
[1] "Red"

[[2]]
[1] "Green"

[[3]]
[1] 21 32 11

[[4]]
[1] TRUE

[[5]]
[1] 51.23

[[6]]
[1] 119.1

Liste Öğelerini Adlandırma

Liste elemanlarına isim verilebilir ve bu isimler kullanılarak erişilebilirler.

# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
   list("green",12.3))

# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")

# Show the list.
print(list_data)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

$`1st_Quarter` [1] "Jan" "Feb" "Mar" $A_Matrix
     [,1] [,2] [,3]
[1,]    3    5   -2
[2,]    9    1    8

$A_Inner_list $A_Inner_list[[1]]
[1] "green"

$A_Inner_list[[2]]
[1] 12.3

Liste Öğelerine Erişim

Listenin elemanlarına listedeki elemanın indeksi ile erişilebilir. İsimlendirilmiş listeler olması durumunda isimler kullanılarak da erişilebilir.

Yukarıdaki örnekteki listeyi kullanmaya devam ediyoruz -

# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
   list("green",12.3))

# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")

# Access the first element of the list.
print(list_data[1])

# Access the thrid element. As it is also a list, all its elements will be printed.
print(list_data[3])

# Access the list element using the name of the element.
print(list_data$A_Matrix)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

$`1st_Quarter` [1] "Jan" "Feb" "Mar" $A_Inner_list
$A_Inner_list[[1]] [1] "green" $A_Inner_list[[2]]
[1] 12.3

     [,1] [,2] [,3]
[1,]    3    5   -2
[2,]    9    1    8

Liste Öğelerini Değiştirme

Liste öğelerini aşağıda gösterildiği gibi ekleyebilir, silebilir ve güncelleyebiliriz. Öğeleri yalnızca bir listenin sonuna ekleyebilir ve silebiliriz. Ancak herhangi bir öğeyi güncelleyebiliriz.

# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
   list("green",12.3))

# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")

# Add element at the end of the list.
list_data[4] <- "New element"
print(list_data[4])

# Remove the last element.
list_data[4] <- NULL

# Print the 4th Element.
print(list_data[4])

# Update the 3rd Element.
list_data[3] <- "updated element"
print(list_data[3])

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[[1]]
[1] "New element"

$<NA> NULL $`A Inner list`
[1] "updated element"

Listeleri Birleştirme

Tüm listeleri bir list () işlevi içine yerleştirerek birçok listeyi tek bir listede birleştirebilirsiniz.

# Create two lists.
list1 <- list(1,2,3)
list2 <- list("Sun","Mon","Tue")

# Merge the two lists.
merged.list <- c(list1,list2)

# Print the merged list.
print(merged.list)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] "Sun"

[[5]]
[1] "Mon"

[[6]]
[1] "Tue"

Listeyi Vektöre Dönüştürme

Bir liste bir vektöre dönüştürülebilir, böylece vektörün öğeleri daha fazla manipülasyon için kullanılabilir. Liste vektöre dönüştürüldükten sonra vektörler üzerindeki tüm aritmetik işlemler uygulanabilir. Bu dönüşümü yapmak için,unlist()işlevi. Listeyi girdi olarak alır ve bir vektör üretir.

# Create lists.
list1 <- list(1:5)
print(list1)

list2 <-list(10:14)
print(list2)

# Convert the lists to vectors.
v1 <- unlist(list1)
v2 <- unlist(list2)

print(v1)
print(v2)

# Now add the vectors
result <- v1+v2
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[[1]]
[1] 1 2 3 4 5

[[1]]
[1] 10 11 12 13 14

[1] 1 2 3 4 5
[1] 10 11 12 13 14
[1] 11 13 15 17 19

Matrisler, elemanların iki boyutlu dikdörtgen bir düzende düzenlendiği R nesneleridir. Aynı atomik türden elementler içerirler. Yalnızca karakterler veya yalnızca mantıksal değerler içeren bir matris oluşturabilsek de, bunların pek bir faydası yoktur. Matematiksel hesaplamalarda kullanılacak sayısal öğeler içeren matrisler kullanıyoruz.

Bir Matrix, matrix() işlevi.

Sözdizimi

R'de bir matris oluşturmak için temel sözdizimi -

matrix(data, nrow, ncol, byrow, dimnames)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • data matrisin veri elemanları haline gelen girdi vektörüdür.

  • nrow oluşturulacak satır sayısıdır.

  • ncol oluşturulacak sütun sayısıdır.

  • byrowmantıklı bir ipucudur. TRUE ise, giriş vektör öğeleri satıra göre düzenlenir.

  • dimname satırlara ve sütunlara atanan adlardır.

Misal

Girdi olarak sayılardan oluşan bir vektör alarak bir matris oluşturun.

# Elements are arranged sequentially by row.
M <- matrix(c(3:14), nrow = 4, byrow = TRUE)
print(M)

# Elements are arranged sequentially by column.
N <- matrix(c(3:14), nrow = 4, byrow = FALSE)
print(N)

# Define the column and row names.
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")

P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[,1] [,2] [,3]
[1,]    3    4    5
[2,]    6    7    8
[3,]    9   10   11
[4,]   12   13   14
     [,1] [,2] [,3]
[1,]    3    7   11
[2,]    4    8   12
[3,]    5    9   13
[4,]    6   10   14
     col1 col2 col3
row1    3    4    5
row2    6    7    8
row3    9   10   11
row4   12   13   14

Bir Matrisin Elemanlarına Erişim

Bir matrisin elemanlarına, elemanın sütun ve satır indeksi kullanılarak erişilebilir. Aşağıdaki belirli öğeleri bulmak için yukarıdaki P matrisini ele alıyoruz.

# Define the column and row names.
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")

# Create the matrix.
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))

# Access the element at 3rd column and 1st row.
print(P[1,3])

# Access the element at 2nd column and 4th row.
print(P[4,2])

# Access only the  2nd row.
print(P[2,])

# Access only the 3rd column.
print(P[,3])

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 5
[1] 13
col1 col2 col3 
   6    7    8 
row1 row2 row3 row4 
   5    8   11   14

Matris Hesaplamaları

R operatörleri kullanılarak matrisler üzerinde çeşitli matematiksel işlemler gerçekleştirilir. İşlemin sonucu da bir matristir.

İşlemde yer alan matrisler için boyutlar (satır ve sütun sayısı) aynı olmalıdır.

Matris Toplama ve Çıkarma

# Create two 2x3 matrices.
matrix1 <- matrix(c(3, 9, -1, 4, 2, 6), nrow = 2)
print(matrix1)

matrix2 <- matrix(c(5, 2, 0, 9, 3, 4), nrow = 2)
print(matrix2)

# Add the matrices.
result <- matrix1 + matrix2
cat("Result of addition","\n")
print(result)

# Subtract the matrices
result <- matrix1 - matrix2
cat("Result of subtraction","\n")
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[,1] [,2] [,3]
[1,]    3   -1    2
[2,]    9    4    6
     [,1] [,2] [,3]
[1,]    5    0    3
[2,]    2    9    4
Result of addition 
     [,1] [,2] [,3]
[1,]    8   -1    5
[2,]   11   13   10
Result of subtraction 
     [,1] [,2] [,3]
[1,]   -2   -1   -1
[2,]    7   -5    2

Matris Çarpma ve Bölme

# Create two 2x3 matrices.
matrix1 <- matrix(c(3, 9, -1, 4, 2, 6), nrow = 2)
print(matrix1)

matrix2 <- matrix(c(5, 2, 0, 9, 3, 4), nrow = 2)
print(matrix2)

# Multiply the matrices.
result <- matrix1 * matrix2
cat("Result of multiplication","\n")
print(result)

# Divide the matrices
result <- matrix1 / matrix2
cat("Result of division","\n")
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[,1] [,2] [,3]
[1,]    3   -1    2
[2,]    9    4    6
     [,1] [,2] [,3]
[1,]    5    0    3
[2,]    2    9    4
Result of multiplication 
     [,1] [,2] [,3]
[1,]   15    0    6
[2,]   18   36   24
Result of division 
     [,1]      [,2]      [,3]
[1,]  0.6      -Inf 0.6666667
[2,]  4.5 0.4444444 1.5000000

Diziler, verileri ikiden fazla boyutta depolayabilen R veri nesneleridir. Örneğin - Bir boyut dizisi (2, 3, 4) oluşturursak, her biri 2 satır ve 3 sütun içeren 4 dikdörtgen matris oluşturur. Diziler yalnızca veri türünü depolayabilir.

Bir dizi, array()işlevi. Vektörleri girdi olarak alır ve içindeki değerleri kullanır.dim bir dizi oluşturmak için parametre.

Misal

Aşağıdaki örnek, her biri 3 satır ve 3 sütun içeren iki 3x3 matristen oluşan bir dizi oluşturur.

# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)

# Take these vectors as input to the array.
result <- array(c(vector1,vector2),dim = c(3,3,2))
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

, , 1

     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15

, , 2

     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15

Sütunları ve Satırları Adlandırma

Dizideki satırlara, sütunlara ve matrislere isim verebiliriz. dimnames parametre.

# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")

# Take these vectors as input to the array.
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names,
   matrix.names))
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

, , Matrix1

     COL1 COL2 COL3
ROW1    5   10   13
ROW2    9   11   14
ROW3    3   12   15

, , Matrix2

     COL1 COL2 COL3
ROW1    5   10   13
ROW2    9   11   14
ROW3    3   12   15

Dizi Öğelerine Erişim

# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")

# Take these vectors as input to the array.
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,
   column.names, matrix.names))

# Print the third row of the second matrix of the array.
print(result[3,,2])

# Print the element in the 1st row and 3rd column of the 1st matrix.
print(result[1,3,1])

# Print the 2nd Matrix.
print(result[,,2])

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

COL1 COL2 COL3 
   3   12   15 
[1] 13
     COL1 COL2 COL3
ROW1    5   10   13
ROW2    9   11   14
ROW3    3   12   15

Dizi Öğelerini Düzenleme

Dizi çok boyutlu matrislerden oluştuğundan, dizinin elemanları üzerindeki işlemler matrislerin elemanlarına erişilerek gerçekleştirilir.

# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)

# Take these vectors as input to the array.
array1 <- array(c(vector1,vector2),dim = c(3,3,2))

# Create two vectors of different lengths.
vector3 <- c(9,1,0)
vector4 <- c(6,0,11,3,14,1,2,6,9)
array2 <- array(c(vector1,vector2),dim = c(3,3,2))

# create matrices from these arrays.
matrix1 <- array1[,,2]
matrix2 <- array2[,,2]

# Add the matrices.
result <- matrix1+matrix2
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[,1] [,2] [,3]
[1,]   10   20   26
[2,]   18   22   28
[3,]    6   24   30

Dizi Öğeleri Genelinde Hesaplamalar

Bir dizideki öğeler arasında hesaplamalar yapabiliriz. apply() işlevi.

Sözdizimi

apply(x, margin, fun)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x bir dizidir.

  • margin kullanılan veri kümesinin adıdır.

  • fun dizinin elemanları arasında uygulanacak işlevdir.

Misal

Tüm matrisler boyunca bir dizinin satırlarında bulunan öğelerin toplamını hesaplamak için aşağıdaki apply () işlevini kullanıyoruz.

# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)

# Take these vectors as input to the array.
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)

# Use apply to calculate the sum of the rows across all the matrices.
result <- apply(new.array, c(1), sum)
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

, , 1

     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15

, , 2

     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15

[1] 56 68 60

Faktörler, verileri kategorize etmek ve seviyeler halinde saklamak için kullanılan veri nesneleridir. Hem dizeleri hem de tam sayıları depolayabilirler. Sınırlı sayıda benzersiz değeri olan sütunlarda kullanışlıdırlar. "Erkek", "Kadın" ve Doğru, Yanlış vb. Gibi. İstatistiksel modelleme için veri analizinde faydalıdırlar.

Faktörler kullanılarak oluşturulur factor () girdi olarak bir vektör alarak fonksiyon.

Misal

# Create a vector as input.
data <- c("East","West","East","North","North","East","West","West","West","East","North")

print(data)
print(is.factor(data))

# Apply the factor function.
factor_data <- factor(data)

print(factor_data)
print(is.factor(factor_data))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "East"  "West"  "East"  "North" "North" "East"  "West"  "West"  "West"  "East" "North"
[1] FALSE
[1] East  West  East  North North East  West  West  West  East  North
Levels: East North West
[1] TRUE

Veri Çerçevesindeki Faktörler

Bir metin verisi sütunuyla herhangi bir veri çerçevesi oluştururken, R, metin sütununu kategorik veriler olarak ele alır ve üzerinde faktörler oluşturur.

# Create the vectors for data frame.
height <- c(132,151,162,139,166,147,122)
weight <- c(48,49,66,53,67,52,40)
gender <- c("male","male","female","female","male","female","male")

# Create the data frame.
input_data <- data.frame(height,weight,gender)
print(input_data)

# Test if the gender column is a factor.
print(is.factor(input_data$gender)) # Print the gender column so see the levels. print(input_data$gender)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

height weight gender
1    132     48   male
2    151     49   male
3    162     66 female
4    139     53 female
5    166     67   male
6    147     52 female
7    122     40   male
[1] TRUE
[1] male   male   female female male   female male  
Levels: female male

Seviye Sırasını Değiştirme

Bir faktördeki seviyelerin sırası, seviyelerin yeni sırası ile tekrar faktör fonksiyonu uygulanarak değiştirilebilir.

data <- c("East","West","East","North","North","East","West",
   "West","West","East","North")
# Create the factors
factor_data <- factor(data)
print(factor_data)

# Apply the factor function with required order of the level.
new_order_data <- factor(factor_data,levels = c("East","West","North"))
print(new_order_data)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] East  West  East  North North East  West  West  West  East  North
Levels: East North West
 [1] East  West  East  North North East  West  West  West  East  North
Levels: East West North

Faktör Seviyeleri Oluşturma

Faktör seviyelerini, gl()işlevi. Girdi olarak iki tamsayı alır, bu da her seviyede kaç seviye ve kaç kez olduğunu gösterir.

Sözdizimi

gl(n, k, labels)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • n düzey sayısını veren bir tam sayıdır.

  • k yineleme sayısını veren bir tam sayıdır.

  • labels ortaya çıkan faktör seviyeleri için bir etiket vektörüdür.

Misal

v <- gl(3, 4, labels = c("Tampa", "Seattle","Boston"))
print(v)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Tampa   Tampa   Tampa   Tampa   Seattle Seattle Seattle Seattle Boston 
[10] Boston  Boston  Boston 
Levels: Tampa Seattle Boston

Veri çerçevesi, her sütunun bir değişkenin değerlerini içerdiği ve her satırın her sütundan bir değer kümesi içerdiği bir tablo veya iki boyutlu dizi benzeri bir yapıdır.

Bir veri çerçevesinin özellikleri aşağıdadır.

  • Sütun adları boş olmamalıdır.
  • Satır adları benzersiz olmalıdır.
  • Bir veri çerçevesinde saklanan veriler sayısal, faktör veya karakter tipinde olabilir.
  • Her sütun aynı sayıda veri öğesi içermelidir.

Veri Çerçevesi Oluşturun

# Create the data frame.
emp.data <- data.frame(
   emp_id = c (1:5), 
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25), 
   
   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
# Print the data frame.			
print(emp.data)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

emp_id    emp_name     salary     start_date
1     1     Rick        623.30     2012-01-01
2     2     Dan         515.20     2013-09-23
3     3     Michelle    611.00     2014-11-15
4     4     Ryan        729.00     2014-05-11
5     5     Gary        843.25     2015-03-27

Veri Çerçevesinin Yapısını Alın

Veri çerçevesinin yapısı kullanılarak görülebilir str() işlevi.

# Create the data frame.
emp.data <- data.frame(
   emp_id = c (1:5), 
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25), 
   
   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
# Get the structure of the data frame.
str(emp.data)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

'data.frame':   5 obs. of  4 variables:
 $ emp_id : int 1 2 3 4 5 $ emp_name  : chr  "Rick" "Dan" "Michelle" "Ryan" ...
 $ salary : num 623 515 611 729 843 $ start_date: Date, format: "2012-01-01" "2013-09-23" "2014-11-15" "2014-05-11" ...

Veri Çerçevesindeki Verilerin Özeti

Verilerin istatistiksel özeti ve niteliği uygulama yapılarak elde edilebilir summary() işlevi.

# Create the data frame.
emp.data <- data.frame(
   emp_id = c (1:5), 
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25), 
   
   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
# Print the summary.
print(summary(emp.data))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

emp_id    emp_name             salary        start_date        
 Min.   :1   Length:5           Min.   :515.2   Min.   :2012-01-01  
 1st Qu.:2   Class :character   1st Qu.:611.0   1st Qu.:2013-09-23  
 Median :3   Mode  :character   Median :623.3   Median :2014-05-11  
 Mean   :3                      Mean   :664.4   Mean   :2014-01-14  
 3rd Qu.:4                      3rd Qu.:729.0   3rd Qu.:2014-11-15  
 Max.   :5                      Max.   :843.2   Max.   :2015-03-27

Veri Çerçevesinden Veri Çıkarın

Sütun adını kullanarak bir veri çerçevesinden belirli bir sütunu çıkarın.

# Create the data frame.
emp.data <- data.frame(
   emp_id = c (1:5),
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25),
   
   start_date = as.Date(c("2012-01-01","2013-09-23","2014-11-15","2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
# Extract Specific columns.
result <- data.frame(emp.data$emp_name,emp.data$salary)
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

emp.data.emp_name emp.data.salary
1              Rick          623.30
2               Dan          515.20
3          Michelle          611.00
4              Ryan          729.00
5              Gary          843.25

İlk iki satırı ve ardından tüm sütunları çıkarın

# Create the data frame.
emp.data <- data.frame(
   emp_id = c (1:5),
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25),
   
   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
# Extract first two rows.
result <- emp.data[1:2,]
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

emp_id    emp_name   salary    start_date
1      1     Rick      623.3     2012-01-01
2      2     Dan       515.2     2013-09-23

3 ekstrakte rd ve 5 inci 2'ye satır nd ve 4 inci kolon

# Create the data frame.
emp.data <- data.frame(
   emp_id = c (1:5), 
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25), 
   
	start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)

# Extract 3rd and 5th row with 2nd and 4th column.
result <- emp.data[c(3,5),c(2,4)]
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

emp_name start_date
3 Michelle 2014-11-15
5     Gary 2015-03-27

Veri Çerçevesini Genişlet

Bir veri çerçevesi, sütunlar ve satırlar eklenerek genişletilebilir.

Sütun Ekle

Yeni bir sütun adı kullanarak sütun vektörünü eklemeniz yeterlidir.

# Create the data frame.
emp.data <- data.frame(
   emp_id = c (1:5), 
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25), 
   
   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)

# Add the "dept" coulmn.
emp.data$dept <- c("IT","Operations","IT","HR","Finance")
v <- emp.data
print(v)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

emp_id   emp_name    salary    start_date       dept
1     1    Rick        623.30    2012-01-01       IT
2     2    Dan         515.20    2013-09-23       Operations
3     3    Michelle    611.00    2014-11-15       IT
4     4    Ryan        729.00    2014-05-11       HR
5     5    Gary        843.25    2015-03-27       Finance

Satır ekle

Mevcut bir veri çerçevesine kalıcı olarak daha fazla satır eklemek için, yeni satırları mevcut veri çerçevesiyle aynı yapıya getirmemiz ve rbind() işlevi.

Aşağıdaki örnekte, yeni satırlarla bir veri çerçevesi oluşturuyoruz ve son veri çerçevesini oluşturmak için bunu mevcut veri çerçevesiyle birleştiriyoruz.

# Create the first data frame.
emp.data <- data.frame(
   emp_id = c (1:5), 
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25), 
   
   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   dept = c("IT","Operations","IT","HR","Finance"),
   stringsAsFactors = FALSE
)

# Create the second data frame
emp.newdata <- 	data.frame(
   emp_id = c (6:8), 
   emp_name = c("Rasmi","Pranab","Tusar"),
   salary = c(578.0,722.5,632.8), 
   start_date = as.Date(c("2013-05-21","2013-07-30","2014-06-17")),
   dept = c("IT","Operations","Fianance"),
   stringsAsFactors = FALSE
)

# Bind the two data frames.
emp.finaldata <- rbind(emp.data,emp.newdata)
print(emp.finaldata)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

emp_id     emp_name    salary     start_date       dept
1      1     Rick        623.30     2012-01-01       IT
2      2     Dan         515.20     2013-09-23       Operations
3      3     Michelle    611.00     2014-11-15       IT
4      4     Ryan        729.00     2014-05-11       HR
5      5     Gary        843.25     2015-03-27       Finance
6      6     Rasmi       578.00     2013-05-21       IT
7      7     Pranab      722.50     2013-07-30       Operations
8      8     Tusar       632.80     2014-06-17       Fianance

R paketleri, R işlevleri, uyumlu kod ve örnek verilerden oluşan bir koleksiyondur. Adlı bir dizinde saklanırlar"library"R ortamında. Varsayılan olarak, R, kurulum sırasında bir dizi paket kurar. Daha sonra, belirli bir amaç için ihtiyaç duyulduğunda daha fazla paket eklenir. R konsolunu başlattığımızda, varsayılan olarak yalnızca varsayılan paketler kullanılabilir. Halihazırda kurulu olan diğer paketlerin, onları kullanacak olan R programı tarafından kullanılmak üzere açıkça yüklenmesi gerekir.

R dilinde mevcut olan tüm paketler R Paketlerinde listelenmiştir .

Aşağıda, R paketlerini kontrol etmek, doğrulamak ve kullanmak için kullanılacak komutların bir listesi bulunmaktadır.

Mevcut R Paketlerini Kontrol Edin

R paketleri içeren kitaplık konumlarını alın

.libPaths()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir. Bilgisayarınızın yerel ayarlarına bağlı olarak değişebilir.

[2] "C:/Program Files/R/R-3.2.2/library"

Yüklü tüm paketlerin listesini alın

library()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir. Bilgisayarınızın yerel ayarlarına bağlı olarak değişebilir.

Packages in library ‘C:/Program Files/R/R-3.2.2/library’:

base                    The R Base Package
boot                    Bootstrap Functions (Originally by Angelo Canty
                        for S)
class                   Functions for Classification
cluster                 "Finding Groups in Data": Cluster Analysis
                        Extended Rousseeuw et al.
codetools               Code Analysis Tools for R
compiler                The R Compiler Package
datasets                The R Datasets Package
foreign                 Read Data Stored by 'Minitab', 'S', 'SAS',
                        'SPSS', 'Stata', 'Systat', 'Weka', 'dBase', ...
graphics                The R Graphics Package
grDevices               The R Graphics Devices and Support for Colours
                        and Fonts
grid                    The Grid Graphics Package
KernSmooth              Functions for Kernel Smoothing Supporting Wand
                        & Jones (1995)
lattice                 Trellis Graphics for R
MASS                    Support Functions and Datasets for Venables and
                        Ripley's MASS
Matrix                  Sparse and Dense Matrix Classes and Methods
methods                 Formal Methods and Classes
mgcv                    Mixed GAM Computation Vehicle with GCV/AIC/REML
                        Smoothness Estimation
nlme                    Linear and Nonlinear Mixed Effects Models
nnet                    Feed-Forward Neural Networks and Multinomial
                        Log-Linear Models
parallel                Support for Parallel computation in R
rpart                   Recursive Partitioning and Regression Trees
spatial                 Functions for Kriging and Point Pattern
                        Analysis
splines                 Regression Spline Functions and Classes
stats                   The R Stats Package
stats4                  Statistical Functions using S4 Classes
survival                Survival Analysis
tcltk                   Tcl/Tk Interface
tools                   Tools for Package Development
utils                   The R Utils Package

Şu anda R ortamında yüklü olan tüm paketleri alın

search()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir. Bilgisayarınızın yerel ayarlarına bağlı olarak değişebilir.

[1] ".GlobalEnv"        "package:stats"     "package:graphics" 
[4] "package:grDevices" "package:utils"     "package:datasets" 
[7] "package:methods"   "Autoloads"         "package:base"

Yeni Bir Paket Kurun

Yeni R paketleri eklemenin iki yolu vardır. Biri doğrudan CRAN dizininden yükleme, diğeri ise paketi yerel sisteminize indirip manuel olarak yüklemektir.

Doğrudan CRAN'dan yükleyin

Aşağıdaki komut paketleri doğrudan CRAN web sayfasından alır ve paketi R ortamına yükler. En yakın aynayı seçmeniz istenebilir. Bulunduğunuz yere uygun olanı seçin.

install.packages("Package Name")
 
# Install the package named "XML".
 install.packages("XML")

Paketi manuel olarak yükleyin

Gerekli paketi indirmek için R Paketleri bağlantısına gidin . Paketi bir.zip yerel sistemde uygun bir konumda dosya.

Şimdi bu paketi R ortamına kurmak için aşağıdaki komutu çalıştırabilirsiniz.

install.packages(file_name_with_path, repos = NULL, type = "source")

# Install the package named "XML"
install.packages("E:/XML_3.98-1.3.zip", repos = NULL, type = "source")

Paketi Kitaplığa Yükle

Bir paket kodda kullanılmadan önce mevcut R ortamına yüklenmelidir. Ayrıca önceden yüklenmiş ancak mevcut ortamda bulunmayan bir paketi de yüklemeniz gerekir.

Aşağıdaki komut kullanılarak bir paket yüklenir -

library("package Name", lib.loc = "path to library")

# Load the package named "XML"
install.packages("E:/XML_3.98-1.3.zip", repos = NULL, type = "source")

R'de Veri Yeniden Şekillendirme, verilerin satırlar ve sütunlar halinde düzenlenme şeklini değiştirmekle ilgilidir. R'deki çoğu zaman veri işleme, giriş verilerini bir veri çerçevesi olarak alarak yapılır. Bir veri çerçevesinin satırlarından ve sütunlarından veri çıkarmak kolaydır, ancak veri çerçevesine, onu aldığımız formattan farklı bir formatta ihtiyaç duyduğumuz durumlar vardır. R, bir veri çerçevesinde satırları bölmek, birleştirmek ve sütunlara dönüştürmek için birçok işleve sahiptir.

Veri Çerçevesindeki Sütunları ve Satırları Birleştirme

Bir veri çerçevesi oluşturmak için birden fazla vektörü birleştirebiliriz. cbind()işlevi. Ayrıca iki veri çerçevesini kullanarak birleştirebilirizrbind() işlevi.

# Create vector objects.
city <- c("Tampa","Seattle","Hartford","Denver")
state <- c("FL","WA","CT","CO")
zipcode <- c(33602,98104,06161,80294)

# Combine above three vectors into one data frame.
addresses <- cbind(city,state,zipcode)

# Print a header.
cat("# # # # The First data frame\n") 

# Print the data frame.
print(addresses)

# Create another data frame with similar columns
new.address <- data.frame(
   city = c("Lowry","Charlotte"),
   state = c("CO","FL"),
   zipcode = c("80230","33949"),
   stringsAsFactors = FALSE
)

# Print a header.
cat("# # # The Second data frame\n") 

# Print the data frame.
print(new.address)

# Combine rows form both the data frames.
all.addresses <- rbind(addresses,new.address)

# Print a header.
cat("# # # The combined data frame\n") 

# Print the result.
print(all.addresses)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

# # # # The First data frame
     city       state zipcode
[1,] "Tampa"    "FL"  "33602"
[2,] "Seattle"  "WA"  "98104"
[3,] "Hartford" "CT"   "6161" 
[4,] "Denver"   "CO"  "80294"

# # # The Second data frame
       city       state   zipcode
1      Lowry      CO      80230
2      Charlotte  FL      33949

# # # The combined data frame
       city      state zipcode
1      Tampa     FL    33602
2      Seattle   WA    98104
3      Hartford  CT     6161
4      Denver    CO    80294
5      Lowry     CO    80230
6     Charlotte  FL    33949

Veri Çerçevelerini Birleştirme

Kullanarak iki veri çerçevesini birleştirebiliriz merge()işlevi. Veri çerçeveleri, birleştirmenin gerçekleştiği sütun adlarıyla aynı olmalıdır.

Aşağıdaki örnekte, "MASS" kitaplığında bulunan Pima Kızılderili Kadınlarında Diyabet hakkındaki veri setlerini ele alıyoruz. iki veri setini kan basıncı ("bp") ve vücut kitle indeksi ("bmi") değerlerine göre birleştiriyoruz. Birleştirme için bu iki sütunu seçerken, bu iki değişkenin değerlerinin her iki veri kümesinde eşleştiği kayıtlar tek bir veri çerçevesi oluşturmak için bir araya getirilir.

library(MASS)
merged.Pima <- merge(x = Pima.te, y = Pima.tr,
   by.x = c("bp", "bmi"),
   by.y = c("bp", "bmi")
)
print(merged.Pima)
nrow(merged.Pima)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

bp  bmi npreg.x glu.x skin.x ped.x age.x type.x npreg.y glu.y skin.y ped.y
1  60 33.8       1   117     23 0.466    27     No       2   125     20 0.088
2  64 29.7       2    75     24 0.370    33     No       2   100     23 0.368
3  64 31.2       5   189     33 0.583    29    Yes       3   158     13 0.295
4  64 33.2       4   117     27 0.230    24     No       1    96     27 0.289
5  66 38.1       3   115     39 0.150    28     No       1   114     36 0.289
6  68 38.5       2   100     25 0.324    26     No       7   129     49 0.439
7  70 27.4       1   116     28 0.204    21     No       0   124     20 0.254
8  70 33.1       4    91     32 0.446    22     No       9   123     44 0.374
9  70 35.4       9   124     33 0.282    34     No       6   134     23 0.542
10 72 25.6       1   157     21 0.123    24     No       4    99     17 0.294
11 72 37.7       5    95     33 0.370    27     No       6   103     32 0.324
12 74 25.9       9   134     33 0.460    81     No       8   126     38 0.162
13 74 25.9       1    95     21 0.673    36     No       8   126     38 0.162
14 78 27.6       5    88     30 0.258    37     No       6   125     31 0.565
15 78 27.6      10   122     31 0.512    45     No       6   125     31 0.565
16 78 39.4       2   112     50 0.175    24     No       4   112     40 0.236
17 88 34.5       1   117     24 0.403    40    Yes       4   127     11 0.598
   age.y type.y
1     31     No
2     21     No
3     24     No
4     21     No
5     21     No
6     43    Yes
7     36    Yes
8     40     No
9     29    Yes
10    28     No
11    55     No
12    39     No
13    39     No
14    49    Yes
15    49    Yes
16    38     No
17    28     No
[1] 17

Eritme ve Döküm

R programlamanın en ilginç yönlerinden biri, istenen şekli elde etmek için verilerin şeklini birden çok adımda değiştirmektir. Bunu yapmak için kullanılan işlevleremelt() ve cast().

"MASS" adlı kütüphanede bulunan gemi adı verilen veri setini dikkate alıyoruz.

library(MASS)
print(ships)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

type year   period   service   incidents
1     A   60     60        127         0
2     A   60     75         63         0
3     A   65     60       1095         3
4     A   65     75       1095         4
5     A   70     60       1512         6
.............
.............
8     A   75     75       2244         11
9     B   60     60      44882         39
10    B   60     75      17176         29
11    B   65     60      28609         58
............
............
17    C   60     60      1179          1
18    C   60     75       552          1
19    C   65     60       781          0
............
............

Verileri Eritin

Şimdi verileri düzenlemek için eritiyoruz, tür ve yıl dışındaki tüm sütunları birden çok satıra dönüştürüyoruz.

molten.ships <- melt(ships, id = c("type","year"))
print(molten.ships)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

type year  variable  value
1      A   60    period      60
2      A   60    period      75
3      A   65    period      60
4      A   65    period      75
............
............
9      B   60    period      60
10     B   60    period      75
11     B   65    period      60
12     B   65    period      75
13     B   70    period      60
...........
...........
41     A   60    service    127
42     A   60    service     63
43     A   65    service   1095
...........
...........
70     D   70    service   1208
71     D   75    service      0
72     D   75    service   2051
73     E   60    service     45
74     E   60    service      0
75     E   65    service    789
...........
...........
101    C   70    incidents    6
102    C   70    incidents    2
103    C   75    incidents    0
104    C   75    incidents    1
105    D   60    incidents    0
106    D   60    incidents    0
...........
...........

Erimiş Verileri Dökme

Erimiş verileri, her yıl için her gemi türünün toplamının oluşturulduğu yeni bir forma dönüştürebiliriz. Kullanılarak yapılırcast() işlevi.

recasted.ship <- cast(molten.ships, type+year~variable,sum)
print(recasted.ship)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

type year  period  service  incidents
1     A   60    135       190      0
2     A   65    135      2190      7
3     A   70    135      4865     24
4     A   75    135      2244     11
5     B   60    135     62058     68
6     B   65    135     48979    111
7     B   70    135     20163     56
8     B   75    135      7117     18
9     C   60    135      1731      2
10    C   65    135      1457      1
11    C   70    135      2731      8
12    C   75    135       274      1
13    D   60    135       356      0
14    D   65    135       480      0
15    D   70    135      1557     13
16    D   75    135      2051      4
17    E   60    135        45      0
18    E   65    135      1226     14
19    E   70    135      3318     17
20    E   75    135       542      1

R'de, R ortamı dışında depolanan dosyalardan verileri okuyabiliriz. Ayrıca, işletim sistemi tarafından saklanacak ve erişilecek dosyalara da veri yazabiliriz. R, csv, excel, xml vb. Gibi çeşitli dosya formatlarını okuyabilir ve yazabilir.

Bu bölümde bir csv dosyasından veri okumayı ve ardından bir csv dosyasına veri yazmayı öğreneceğiz. Dosya, R'nin okuyabilmesi için geçerli çalışma dizininde bulunmalıdır. Elbette kendi dizinimizi de ayarlayabilir ve oradan dosya okuyabiliriz.

Çalışma Dizinini Alma ve Ayarlama

R çalışma alanının hangi dizine işaret ettiğini kontrol edebilirsiniz. getwd()işlevi. Ayrıca yeni bir çalışma dizini de ayarlayabilirsiniz.setwd()işlevi.

# Get and print current working directory.
print(getwd())

# Set current working directory.
setwd("/web/com")

# Get and print current working directory.
print(getwd())

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "/web/com/1441086124_2016"
[1] "/web/com"

Bu sonuç, işletim sisteminize ve çalıştığınız mevcut dizininize bağlıdır.

CSV Dosyası olarak girin

Csv dosyası, sütunlardaki değerlerin virgülle ayrıldığı bir metin dosyasıdır. Adlı dosyada bulunan aşağıdaki verileri düşüneliminput.csv.

Bu dosyayı, bu verileri kopyalayıp yapıştırarak Windows not defteri kullanarak oluşturabilirsiniz. Dosyayı farklı kaydedininput.csv Not defterinde Tüm dosyalar olarak kaydet (*. *) seçeneğini kullanarak.

id,name,salary,start_date,dept
1,Rick,623.3,2012-01-01,IT
2,Dan,515.2,2013-09-23,Operations
3,Michelle,611,2014-11-15,IT
4,Ryan,729,2014-05-11,HR
5,Gary,843.25,2015-03-27,Finance
6,Nina,578,2013-05-21,IT
7,Simon,632.8,2013-07-30,Operations
8,Guru,722.5,2014-06-17,Finance

CSV Dosyasını Okumak

Aşağıdaki basit bir örnektir read.csv() mevcut çalışma dizininizde bulunan bir CSV dosyasını okuma işlevi -

data <- read.csv("input.csv")
print(data)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

id,   name,    salary,   start_date,     dept
1      1    Rick     623.30    2012-01-01      IT
2      2    Dan      515.20    2013-09-23      Operations
3      3    Michelle 611.00    2014-11-15      IT
4      4    Ryan     729.00    2014-05-11      HR
5     NA    Gary     843.25    2015-03-27      Finance
6      6    Nina     578.00    2013-05-21      IT
7      7    Simon    632.80    2013-07-30      Operations
8      8    Guru     722.50    2014-06-17      Finance

CSV Dosyasını Analiz Etme

Varsayılan olarak read.csv()işlevi, çıktıyı bir veri çerçevesi olarak verir. Bu, aşağıdaki şekilde kolayca kontrol edilebilir. Ayrıca sütun ve satır sayısını da kontrol edebiliriz.

data <- read.csv("input.csv")

print(is.data.frame(data))
print(ncol(data))
print(nrow(data))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] TRUE
[1] 5
[1] 8

Bir veri çerçevesindeki verileri okuduktan sonra, sonraki bölümde açıklandığı gibi veri çerçevelerine uygulanabilir tüm işlevleri uygulayabiliriz.

Maksimum maaşı alın

# Create a data frame.
data <- read.csv("input.csv")

# Get the max salary from data frame.
sal <- max(data$salary)
print(sal)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 843.25

Maksimum maaşı olan kişinin detaylarını alın

SQL where cümlesine benzer belirli filtre kriterlerini karşılayan satırları getirebiliriz.

# Create a data frame.
data <- read.csv("input.csv")

# Get the max salary from data frame.
sal <- max(data$salary)

# Get the person detail having max salary.
retval <- subset(data, salary == max(salary))
print(retval)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

id    name  salary  start_date    dept
5     NA    Gary  843.25  2015-03-27    Finance

BT departmanında çalışan tüm insanları toplayın

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset( data, dept == "IT")
print(retval)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

id   name      salary   start_date   dept
1      1    Rick      623.3    2012-01-01   IT
3      3    Michelle  611.0    2014-11-15   IT
6      6    Nina      578.0    2013-05-21   IT

Maaşı 600'ün üzerinde olan kişileri bilgi işlem departmanına alın

# Create a data frame.
data <- read.csv("input.csv")

info <- subset(data, salary > 600 & dept == "IT")
print(info)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

id   name      salary   start_date   dept
1      1    Rick      623.3    2012-01-01   IT
3      3    Michelle  611.0    2014-11-15   IT

2014'te veya sonrasında katılan kişileri alın

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
print(retval)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

id   name     salary   start_date    dept
3      3    Michelle 611.00   2014-11-15    IT
4      4    Ryan     729.00   2014-05-11    HR
5     NA    Gary     843.25   2015-03-27    Finance
8      8    Guru     722.50   2014-06-17    Finance

CSV Dosyasına Yazmak

R, mevcut veri çerçevesinden csv dosyası oluşturabilir. write.csv()işlevi csv dosyasını oluşturmak için kullanılır. Bu dosya çalışma dizininde oluşturulur.

# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))

# Write filtered data into a new file.
write.csv(retval,"output.csv")
newdata <- read.csv("output.csv")
print(newdata)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

X      id   name      salary   start_date    dept
1 3      3    Michelle  611.00   2014-11-15    IT
2 4      4    Ryan      729.00   2014-05-11    HR
3 5     NA    Gary      843.25   2015-03-27    Finance
4 8      8    Guru      722.50   2014-06-17    Finance

Burada X sütunu, yeni veri kümesinden gelir. Bu, dosya yazılırken ek parametreler kullanılarak bırakılabilir.

# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))

# Write filtered data into a new file.
write.csv(retval,"output.csv", row.names = FALSE)
newdata <- read.csv("output.csv")
print(newdata)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

id    name      salary   start_date    dept
1      3    Michelle  611.00   2014-11-15    IT
2      4    Ryan      729.00   2014-05-11    HR
3     NA    Gary      843.25   2015-03-27    Finance
4      8    Guru      722.50   2014-06-17    Finance

Microsoft Excel, verileri .xls veya .xlsx biçiminde depolayan en yaygın kullanılan elektronik tablo programıdır. R, bazı excel paketlerini kullanarak doğrudan bu dosyalardan okuyabilir. Bu tür paketlerin birkaçı - XLConnect, xlsx, gdata vb. Xlsx paketi kullanacağız. R, bu paketi kullanarak excel dosyasına da yazabilir.

Xlsx Paketini Kurun

"Xlsx" paketini kurmak için R konsolunda aşağıdaki komutu kullanabilirsiniz. Bu paketin bağlı olduğu bazı ek paketlerin kurulmasını isteyebilir. Ek paketleri yüklemek için gerekli paket adıyla aynı komutu uygulayın.

install.packages("xlsx")

"Xlsx" Paketini Doğrulayın ve Yükleyin

"Xlsx" paketini doğrulamak ve yüklemek için aşağıdaki komutu kullanın.

# Verify the package is installed.
any(grepl("xlsx",installed.packages()))

# Load the library into R workspace.
library("xlsx")

Komut dosyası çalıştırıldığında aşağıdaki çıktıyı alıyoruz.

[1] TRUE
Loading required package: rJava
Loading required package: methods
Loading required package: xlsxjars

Xlsx Dosyası olarak girin

Microsoft excel'i açın. Aşağıdaki verileri kopyalayıp sayfa1 adlı çalışma sayfasına yapıştırın.

id	name      salary    start_date	dept
1	Rick	    623.3	  1/1/2012	   IT
2	Dan       515.2     9/23/2013    Operations
3	Michelle  611	     11/15/2014	IT
4	Ryan	    729	     5/11/2014	   HR
5	Gary	    43.25     3/27/2015  	Finance
6	Nina	    578       5/21/2013	   IT
7	Simon	    632.8	  7/30/2013	   Operations
8	Guru	    722.5	  6/17/2014	   Finance

Ayrıca aşağıdaki verileri başka bir çalışma sayfasına kopyalayıp yapıştırın ve bu çalışma sayfasını "şehir" olarak yeniden adlandırın.

name	    city
Rick	    Seattle
Dan       Tampa
Michelle  Chicago
Ryan	    Seattle
Gary	    Houston
Nina	    Boston
Simon	    Mumbai
Guru	    Dallas

Excel dosyasını "input.xlsx" olarak kaydedin. Bunu R çalışma alanının mevcut çalışma dizinine kaydetmelisiniz.

Excel Dosyasını Okumak

İnput.xlsx, read.xlsx()aşağıda gösterildiği gibi işlev görür. Sonuç, R ortamında bir veri çerçevesi olarak saklanır.

# Read the first worksheet in the file input.xlsx.
data <- read.xlsx("input.xlsx", sheetIndex = 1)
print(data)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

id,   name,     salary,   start_date,   dept
1      1    Rick      623.30    2012-01-01    IT
2      2    Dan       515.20    2013-09-23    Operations
3      3    Michelle  611.00    2014-11-15    IT
4      4    Ryan      729.00    2014-05-11    HR
5     NA    Gary      843.25    2015-03-27    Finance
6      6    Nina      578.00    2013-05-21    IT
7      7    Simon     632.80    2013-07-30    Operations
8      8    Guru      722.50    2014-06-17    Finance

İkili dosya, yalnızca bit ve bayt biçiminde depolanan bilgileri içeren bir dosyadır. (0'lar ve 1'ler). İçerisindeki baytlar, yazdırılamayan diğer birçok karakter içeren karakterlere ve sembollere çevrildiğinden, bunlar insan tarafından okunamaz. Herhangi bir metin düzenleyici kullanarak ikili dosya okumaya çalışmak Ø ve ð gibi karakterleri gösterecektir.

İkili dosyanın kullanılabilir olması için belirli programlar tarafından okunması gerekir. Örneğin, bir Microsoft Word programının ikili dosyası, yalnızca Word programı tarafından okunabilir bir biçime okunabilir. Bu, insan tarafından okunabilir metnin yanı sıra, alfasayısal karakterlerle birlikte saklanan karakterlerin biçimlendirilmesi ve sayfa numaraları vb. Gibi çok daha fazla bilgi olduğunu gösterir. Ve son olarak bir ikili dosya sürekli bir bayt dizisidir. Bir metin dosyasında gördüğümüz satır sonu, ilk satırı bir sonrakine katan bir karakterdir.

Bazen, diğer programlar tarafından üretilen verilerin bir ikili dosya olarak R tarafından işlenmesi gerekir. Ayrıca diğer programlarla paylaşılabilen ikili dosyalar oluşturmak için R gereklidir.

R'nin iki işlevi vardır WriteBin() ve readBin() ikili dosyalar oluşturmak ve okumak için.

Sözdizimi

writeBin(object, con)
readBin(con, what, n )

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • con ikili dosyayı okumak veya yazmak için bağlantı nesnesidir.

  • object yazılacak ikili dosyadır.

  • what okunacak baytları temsil eden karakter, tamsayı vb. gibi moddur.

  • n ikili dosyadan okunacak bayt sayısıdır.

Misal

R dahili verilerini "mtcars" olarak kabul ediyoruz. İlk önce ondan bir csv dosyası oluşturup bunu ikili bir dosyaya dönüştürüp OS dosyası olarak saklıyoruz. Daha sonra, R'de oluşturulan bu ikili dosyayı okuyoruz.

İkili Dosyayı Yazmak

"Mtcars" veri çerçevesini bir csv dosyası olarak okuyoruz ve ardından işletim sistemine ikili dosya olarak yazıyoruz.

# Read the "mtcars" data frame as a csv file and store only the columns 
   "cyl", "am" and "gear".
write.table(mtcars, file = "mtcars.csv",row.names = FALSE, na = "", 
   col.names = TRUE, sep = ",")

# Store 5 records from the csv file as a new data frame.
new.mtcars <- read.table("mtcars.csv",sep = ",",header = TRUE,nrows = 5)

# Create a connection object to write the binary file using mode "wb".
write.filename = file("/web/com/binmtcars.dat", "wb")

# Write the column names of the data frame to the connection object.
writeBin(colnames(new.mtcars), write.filename)

# Write the records in each of the column to the file.
writeBin(c(new.mtcars$cyl,new.mtcars$am,new.mtcars$gear), write.filename)

# Close the file for writing so that it can be read by other program.
close(write.filename)

İkili Dosyayı Okumak

Yukarıda oluşturulan ikili dosya, tüm verileri sürekli baytlar olarak depolar. Bu nedenle, sütun adlarının yanı sıra sütun değerlerinin de uygun değerlerini seçerek okuyacağız.

# Create a connection object to read the file in binary mode using "rb".
read.filename <- file("/web/com/binmtcars.dat", "rb")

# First read the column names. n = 3 as we have 3 columns.
column.names <- readBin(read.filename, character(),  n = 3)

# Next read the column values. n = 18 as we have 3 column names and 15 values.
read.filename <- file("/web/com/binmtcars.dat", "rb")
bindata <- readBin(read.filename, integer(),  n = 18)

# Print the data.
print(bindata)

# Read the values from 4th byte to 8th byte which represents "cyl".
cyldata = bindata[4:8]
print(cyldata)

# Read the values form 9th byte to 13th byte which represents "am".
amdata = bindata[9:13]
print(amdata)

# Read the values form 9th byte to 13th byte which represents "gear".
geardata = bindata[14:18]
print(geardata)

# Combine all the read values to a dat frame.
finaldata = cbind(cyldata, amdata, geardata)
colnames(finaldata) = column.names
print(finaldata)

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu ve grafiği üretir -

[1]    7108963 1728081249    7496037          6          6          4
 [7]          6          8          1          1          1          0
[13]          0          4          4          4          3          3

[1] 6 6 4 6 8

[1] 1 1 1 0 0

[1] 4 4 4 3 3

     cyl am gear
[1,]   6  1    4
[2,]   6  1    4
[3,]   4  1    4
[4,]   6  0    3
[5,]   8  0    3

Gördüğümüz gibi, orijinal veriyi R'deki ikili dosyayı okuyarak geri aldık.

XML, hem dosya biçimini hem de World Wide Web, intranetler ve diğer yerlerdeki verileri standart ASCII metni kullanarak paylaşan bir dosya biçimidir. Genişletilebilir İşaretleme Dili (XML) anlamına gelir. HTML'ye benzer şekilde, işaretleme etiketleri içerir. Ancak, biçimlendirme etiketinin sayfanın yapısını tanımladığı HTML'den farklı olarak, xml'de biçimlendirme etiketleri, dosyasında bulunan verilerin anlamını açıklar.

"XML" paketini kullanarak R'deki bir xml dosyasını okuyabilirsiniz. Bu paket aşağıdaki komut kullanılarak kurulabilir.

install.packages("XML")

Giriş Verileri

Aşağıdaki verileri not defteri gibi bir metin düzenleyiciye kopyalayarak bir XMl dosyası oluşturun. Dosyayı bir.xml uzantısı ve dosya türünü seçme all files(*.*).

<RECORDS>
   <EMPLOYEE>
      <ID>1</ID>
      <NAME>Rick</NAME>
      <SALARY>623.3</SALARY>
      <STARTDATE>1/1/2012</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
	
   <EMPLOYEE>
      <ID>2</ID>
      <NAME>Dan</NAME>
      <SALARY>515.2</SALARY>
      <STARTDATE>9/23/2013</STARTDATE>
      <DEPT>Operations</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>3</ID>
      <NAME>Michelle</NAME>
      <SALARY>611</SALARY>
      <STARTDATE>11/15/2014</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>4</ID>
      <NAME>Ryan</NAME>
      <SALARY>729</SALARY>
      <STARTDATE>5/11/2014</STARTDATE>
      <DEPT>HR</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>5</ID>
      <NAME>Gary</NAME>
      <SALARY>843.25</SALARY>
      <STARTDATE>3/27/2015</STARTDATE>
      <DEPT>Finance</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>6</ID>
      <NAME>Nina</NAME>
      <SALARY>578</SALARY>
      <STARTDATE>5/21/2013</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>7</ID>
      <NAME>Simon</NAME>
      <SALARY>632.8</SALARY>
      <STARTDATE>7/30/2013</STARTDATE>
      <DEPT>Operations</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>8</ID>
      <NAME>Guru</NAME>
      <SALARY>722.5</SALARY>
      <STARTDATE>6/17/2014</STARTDATE>
      <DEPT>Finance</DEPT>
   </EMPLOYEE>
	
</RECORDS>

XML Dosyasını Okuma

Xml dosyası, işlev kullanılarak R tarafından okunur xmlParse(). R'de bir liste olarak saklanır.

# Load the package required to read XML files.
library("XML")

# Also load the other required package.
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Print the result.
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

1
Rick
623.3
1/1/2012
IT

2
Dan
515.2
9/23/2013
Operations

3
Michelle
611
11/15/2014
IT

4
Ryan
729
5/11/2014
HR

5
Gary
843.25
3/27/2015
Finance

6
Nina
578
5/21/2013
IT

7
Simon
632.8
7/30/2013
Operations

8
Guru
722.5
6/17/2014
Finance

XML Dosyasında Bulunan Düğüm Sayısını Alın

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Find number of nodes in the root.
rootsize <- xmlSize(rootnode)

# Print the result.
print(rootsize)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

output
[1] 8

İlk Düğümün Ayrıntıları

Ayrıştırılan dosyanın ilk kaydına bakalım. Bize en üst düzey düğümde bulunan çeşitli öğeler hakkında bir fikir verecektir.

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Print the result.
print(rootnode[1])

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

$EMPLOYEE
   1
   Rick
   623.3
   1/1/2012
   IT
 

attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"

Bir Düğümün Farklı Öğelerini Alın

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Get the first element of the first node.
print(rootnode[[1]][[1]])

# Get the fifth element of the first node.
print(rootnode[[1]][[5]])

# Get the second element of the third node.
print(rootnode[[3]][[2]])

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

1 
IT 
Michelle

Veri Çerçevesine XML

Verileri büyük dosyalarda etkin bir şekilde işlemek için xml dosyasındaki verileri bir veri çerçevesi olarak okuruz. Ardından veri analizi için veri çerçevesini işleyin.

# Load the packages required to read XML files.
library("XML")
library("methods")

# Convert the input xml file to a data frame.
xmldataframe <- xmlToDataFrame("input.xml")
print(xmldataframe)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

ID    NAME     SALARY    STARTDATE       DEPT 
1      1    Rick     623.30    2012-01-01      IT
2      2    Dan      515.20    2013-09-23      Operations
3      3    Michelle 611.00    2014-11-15      IT
4      4    Ryan     729.00    2014-05-11      HR
5     NA    Gary     843.25    2015-03-27      Finance
6      6    Nina     578.00    2013-05-21      IT
7      7    Simon    632.80    2013-07-30      Operations
8      8    Guru     722.50    2014-06-17      Finance

Veriler artık bir veri çerçevesi olarak mevcut olduğundan, dosyayı okumak ve işlemek için veri çerçevesiyle ilgili işlevi kullanabiliriz.

JSON dosyası, verileri insan tarafından okunabilir biçimde metin olarak depolar. Json, JavaScript Object Notation'ın kısaltmasıdır. R, rjson paketini kullanarak JSON dosyalarını okuyabilir.

Rjson Paketini Kurun

R konsolunda, rjson paketini kurmak için aşağıdaki komutu verebilirsiniz.

install.packages("rjson")

Giriş Verileri

Aşağıdaki verileri not defteri gibi bir metin düzenleyiciye kopyalayarak bir JSON dosyası oluşturun. Dosyayı bir.json uzantısı ve dosya türünü seçme all files(*.*).

{ 
   "ID":["1","2","3","4","5","6","7","8" ],
   "Name":["Rick","Dan","Michelle","Ryan","Gary","Nina","Simon","Guru" ],
   "Salary":["623.3","515.2","611","729","843.25","578","632.8","722.5" ],
   
   "StartDate":[ "1/1/2012","9/23/2013","11/15/2014","5/11/2014","3/27/2015","5/21/2013",
      "7/30/2013","6/17/2014"],
   "Dept":[ "IT","Operations","IT","HR","Finance","IT","Operations","Finance"]
}

JSON Dosyasını Okuyun

JSON dosyası, aşağıdaki işlev kullanılarak R tarafından okunur. JSON(). R'de bir liste olarak saklanır.

# Load the package required to read JSON files.
library("rjson")

# Give the input file name to the function.
result <- fromJSON(file = "input.json")

# Print the result.
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

$ID
[1] "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"

$Name [1] "Rick" "Dan" "Michelle" "Ryan" "Gary" "Nina" "Simon" "Guru" $Salary
[1] "623.3"  "515.2"  "611"    "729"    "843.25" "578"    "632.8"  "722.5"

$StartDate [1] "1/1/2012" "9/23/2013" "11/15/2014" "5/11/2014" "3/27/2015" "5/21/2013" "7/30/2013" "6/17/2014" $Dept
[1] "IT"         "Operations" "IT"         "HR"         "Finance"    "IT"
   "Operations" "Finance"

JSON'u Veri Çerçevesine dönüştürme

Yukarıdaki çıkarılan verileri daha fazla analiz için bir R veri çerçevesine dönüştürebiliriz. as.data.frame() işlevi.

# Load the package required to read JSON files.
library("rjson")

# Give the input file name to the function.
result <- fromJSON(file = "input.json")

# Convert JSON file to a data frame.
json_data_frame <- as.data.frame(result)

print(json_data_frame)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

id,   name,    salary,   start_date,     dept
1      1    Rick     623.30    2012-01-01      IT
2      2    Dan      515.20    2013-09-23      Operations
3      3    Michelle 611.00    2014-11-15      IT
4      4    Ryan     729.00    2014-05-11      HR
5     NA    Gary     843.25    2015-03-27      Finance
6      6    Nina     578.00    2013-05-21      IT
7      7    Simon    632.80    2013-07-30      Operations
8      8    Guru     722.50    2014-06-17      Finance

Birçok web sitesi, kullanıcıları tarafından tüketilmesi için veri sağlar. Örneğin, Dünya Sağlık Örgütü (WHO) CSV, txt ve XML dosyaları biçiminde sağlık ve tıbbi bilgiler hakkında raporlar sağlar. R programlarını kullanarak, bu tür web sitelerinden programlı olarak belirli verileri çıkarabiliriz. Web'den verileri hurdaya çıkarmak için kullanılan bazı paketler - "RCurl", XML "ve" stringr "olup, URL'lere bağlanmak, dosyalar için gerekli bağlantıları belirlemek ve bunları yerel ortama indirmek için kullanılırlar.

R Paketlerini Yükleyin

Aşağıdaki paketler, URL'lerin ve dosyalara olan bağlantıların işlenmesi için gereklidir. R Ortamınızda bulunmuyorlarsa, aşağıdaki komutları kullanarak bunları kurabilirsiniz.

install.packages("RCurl")
install.packages("XML")
install.packages("stringr")
install.packages("plyr")

Giriş Verileri

2015 yılı için URL hava durumu verilerini ziyaret edecek ve R kullanarak CSV dosyalarını indireceğiz.

Misal

İşlevi kullanacağız getHTMLLinks()dosyaların URL'lerini toplamak için. O zaman işlevi kullanacağızdownload.file()Dosyaları yerel sisteme kaydetmek için. Aynı kodu birden çok dosya için tekrar tekrar uygulayacağımızdan, birden çok kez çağrılacak bir işlev oluşturacağız. Dosya adları, bu işleve bir R listesi nesnesi biçiminde parametreler olarak aktarılır.

# Read the URL.
url <- "http://www.geos.ed.ac.uk/~weather/jcmb_ws/"

# Gather the html links present in the webpage.
links <- getHTMLLinks(url)

# Identify only the links which point to the JCMB 2015 files. 
filenames <- links[str_detect(links, "JCMB_2015")]

# Store the file names as a list.
filenames_list <- as.list(filenames)

# Create a function to download the files by passing the URL and filename list.
downloadcsv <- function (mainurl,filename) {
   filedetails <- str_c(mainurl,filename)
   download.file(filedetails,filename)
}

# Now apply the l_ply function and save the files into the current R working directory.
l_ply(filenames,downloadcsv,mainurl = "http://www.geos.ed.ac.uk/~weather/jcmb_ws/")

Dosya İndirmeyi Doğrulayın

Yukarıdaki kodu çalıştırdıktan sonra, aşağıdaki dosyaları geçerli R çalışma dizininde bulabilirsiniz.

"JCMB_2015.csv" "JCMB_2015_Apr.csv" "JCMB_2015_Feb.csv" "JCMB_2015_Jan.csv"
   "JCMB_2015_Mar.csv"

Veriler, İlişkisel veritabanı sistemleri normalleştirilmiş bir formatta saklanır. Dolayısıyla, istatistiksel hesaplama yapmak için çok gelişmiş ve karmaşık Sql sorgularına ihtiyacımız olacak. Ancak R, MySql, Oracle, Sql server vb. Birçok ilişkisel veritabanına kolayca bağlanabilir ve onlardan bir veri çerçevesi olarak kayıtları alabilir. Veriler R ortamında mevcut olduğunda, normal bir R veri seti haline gelir ve tüm güçlü paketler ve işlevler kullanılarak işlenebilir veya analiz edilebilir.

Bu eğitimde, R'ye bağlanmak için referans veritabanımız olarak MySql kullanacağız.

RMySQL Paketi

R, MySql veritabanı ile arasında yerel bağlantı sağlayan "RMySQL" adlı yerleşik bir pakete sahiptir. Bu paketi aşağıdaki komutu kullanarak R ortamına kurabilirsiniz.

install.packages("RMySQL")

R'yi MySql'e bağlama

Paket kurulduktan sonra, veritabanına bağlanmak için R'de bir bağlantı nesnesi oluşturuyoruz. Giriş olarak kullanıcı adı, şifre, veritabanı adı ve ana bilgisayar adını alır.

# Create a connection Object to MySQL database.
# We will connect to the sampel database named "sakila" that comes with MySql installation.
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila',
   host = 'localhost')

# List the tables available in this database.
 dbListTables(mysqlconnection)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] "actor"                      "actor_info"                
 [3] "address"                    "category"                  
 [5] "city"                       "country"                   
 [7] "customer"                   "customer_list"             
 [9] "film"                       "film_actor"                
[11] "film_category"              "film_list"                 
[13] "film_text"                  "inventory"                 
[15] "language"                   "nicer_but_slower_film_list"
[17] "payment"                    "rental"                    
[19] "sales_by_film_category"     "sales_by_store"            
[21] "staff"                      "staff_list"                
[23] "store"

Tabloları Sorgulama

MySql'deki veritabanı tablolarını fonksiyonu kullanarak sorgulayabiliriz dbSendQuery(). Sorgu MySql'de çalıştırılır ve sonuç kümesi R kullanılarak döndürülür.fetch()işlevi. Son olarak R'de bir veri çerçevesi olarak saklanır.

# Query the "actor" tables to get all the rows.
result = dbSendQuery(mysqlconnection, "select * from actor")

# Store the result in a R data frame object. n = 5 is used to fetch first 5 rows.
data.frame = fetch(result, n = 5)
print(data.fame)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

actor_id   first_name    last_name         last_update
1        1         PENELOPE      GUINESS           2006-02-15 04:34:33
2        2         NICK          WAHLBERG          2006-02-15 04:34:33
3        3         ED            CHASE             2006-02-15 04:34:33
4        4         JENNIFER      DAVIS             2006-02-15 04:34:33
5        5         JOHNNY        LOLLOBRIGIDA      2006-02-15 04:34:33

Filtre Maddeli Sorgu

Sonucu almak için herhangi bir geçerli seçme sorgusunu geçebiliriz.

result = dbSendQuery(mysqlconnection, "select * from actor where last_name = 'TORN'")

# Fetch all the records(with n = -1) and store it as a data frame.
data.frame = fetch(result, n = -1)
print(data)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

actor_id    first_name     last_name         last_update
1        18         DAN            TORN              2006-02-15 04:34:33
2        94         KENNETH        TORN              2006-02-15 04:34:33
3       102         WALTER         TORN              2006-02-15 04:34:33

Tablolardaki Satırları Güncelleme

Güncelleme sorgusunu dbSendQuery () işlevine ileterek bir Mysql tablosundaki satırları güncelleyebiliriz.

dbSendQuery(mysqlconnection, "update mtcars set disp = 168.5 where hp = 110")

Yukarıdaki kodu çalıştırdıktan sonra MySql Ortamında tablonun güncellendiğini görebiliriz.

Tablolara Veri Ekleme

dbSendQuery(mysqlconnection,
   "insert into mtcars(row_names, mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb)
   values('New Mazda RX4 Wag', 21, 6, 168.5, 110, 3.9, 2.875, 17.02, 0, 1, 4, 4)"
)

Yukarıdaki kodu çalıştırdıktan sonra MySql Ortamında tabloya eklenen satırı görebiliriz.

MySql'de Tablo Oluşturma

MySql'de fonksiyonu kullanarak tablolar oluşturabiliriz dbWriteTable(). Zaten varsa tablonun üzerine yazar ve girdi olarak bir veri çerçevesi alır.

# Create the connection object to the database where we want to create the table.
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila', 
   host = 'localhost')

# Use the R data frame "mtcars" to create the table in MySql.
# All the rows of mtcars are taken inot MySql.
dbWriteTable(mysqlconnection, "mtcars", mtcars[, ], overwrite = TRUE)

Yukarıdaki kodu çalıştırdıktan sonra MySql Ortamında oluşturulan tabloyu görebiliriz.

MySql'de Tabloları Bırakma

Drop table deyimini dbSendQuery () 'ye ileterek MySql veritabanındaki tabloları tablolardan veri sorgulamak için kullandığımız gibi bırakabiliriz.

dbSendQuery(mysqlconnection, 'drop table if exists mtcars')

Yukarıdaki kodu çalıştırdıktan sonra tablonun MySql Ortamına düştüğünü görebiliriz.

R Programlama dili, çizelgeler ve grafikler oluşturmak için çok sayıda kitaplığa sahiptir. Pasta grafik, farklı renklere sahip bir dairenin dilimleri olarak değerlerin temsilidir. Dilimler etiketlenir ve her dilime karşılık gelen sayılar da grafikte temsil edilir.

R'de pasta grafik, pie()vektör girdisi olarak pozitif sayılar alan fonksiyon. Ek parametreler etiketleri, rengi, başlığı vb. Kontrol etmek için kullanılır.

Sözdizimi

R kullanarak pasta grafik oluşturmak için temel sözdizimi -

pie(x, labels, radius, main, col, clockwise)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x pasta grafiğinde kullanılan sayısal değerleri içeren bir vektördür.

  • labels dilimlere açıklama vermek için kullanılır.

  • radius pasta grafiğin dairesinin yarıçapını gösterir. (-1 ile +1 arasındaki değer).

  • main grafiğin başlığını gösterir.

  • col renk paletini gösterir.

  • clockwise dilimlerin saat yönünde mi yoksa saat yönünün tersine mi çizildiğini gösteren mantıksal bir değerdir.

Misal

Sadece giriş vektörü ve etiketleri kullanılarak çok basit bir pasta grafik oluşturulur. Aşağıdaki komut dosyası, pasta grafiği oluşturacak ve geçerli R çalışma dizinine kaydedecektir.

# Create data for the graph.
x <- c(21, 62, 10, 53)
labels <- c("London", "New York", "Singapore", "Mumbai")

# Give the chart file a name.
png(file = "city.png")

# Plot the chart.
pie(x,labels)

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Pasta Grafik Başlığı ve Renkleri

İşleve daha fazla parametre ekleyerek grafiğin özelliklerini genişletebiliriz. Parametresini kullanacağızmain grafiğe bir başlık ve başka bir parametre eklemek için colBu, grafiği çizerken gökkuşağı renk paletinden yararlanacaktır. Paletin uzunluğu, tablo için sahip olduğumuz değerlerin sayısıyla aynı olmalıdır. Bu nedenle uzunluk (x) kullanıyoruz.

Misal

Aşağıdaki komut dosyası, pasta grafiği oluşturacak ve geçerli R çalışma dizinine kaydedecektir.

# Create data for the graph.
x <- c(21, 62, 10, 53)
labels <- c("London", "New York", "Singapore", "Mumbai")

# Give the chart file a name.
png(file = "city_title_colours.jpg")

# Plot the chart with title and rainbow color pallet.
pie(x, labels, main = "City pie chart", col = rainbow(length(x)))

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Dilim Yüzdeleri ve Grafik Göstergesi

Ek grafik değişkenleri oluşturarak dilim yüzdesi ve bir grafik göstergesi ekleyebiliriz.

# Create data for the graph.
x <-  c(21, 62, 10,53)
labels <-  c("London","New York","Singapore","Mumbai")

piepercent<- round(100*x/sum(x), 1)

# Give the chart file a name.
png(file = "city_percentage_legends.jpg")

# Plot the chart.
pie(x, labels = piepercent, main = "City pie chart",col = rainbow(length(x)))
legend("topright", c("London","New York","Singapore","Mumbai"), cex = 0.8,
   fill = rainbow(length(x)))

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

3D Pasta Grafiği

Ek paketler kullanılarak 3 boyutlu bir pasta grafik çizilebilir. Paketplotrix adlı bir işlevi vardır pie3D() bunun için kullanılır.

# Get the library.
library(plotrix)

# Create data for the graph.
x <-  c(21, 62, 10,53)
lbl <-  c("London","New York","Singapore","Mumbai")

# Give the chart file a name.
png(file = "3d_pie_chart.jpg")

# Plot the chart.
pie3D(x,labels = lbl,explode = 0.1, main = "Pie Chart of Countries ")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Çubuk grafik, değişkenin değeriyle orantılı çubuk uzunluğu ile dikdörtgen çubuklardaki verileri temsil eder. R işlevi kullanırbarplot()çubuk grafikler oluşturmak için. R, çubuk grafikte hem dikey hem de Yatay çubuklar çizebilir. Çubuk grafikte, çubukların her birine farklı renkler verilebilir.

Sözdizimi

R'de bir çubuk grafik oluşturmak için temel sözdizimi -

barplot(H,xlab,ylab,main, names.arg,col)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • H çubuk grafikte kullanılan sayısal değerleri içeren bir vektör veya matristir.
  • xlab x ekseni için etikettir.
  • ylab y ekseni için etikettir.
  • main çubuk grafiğin başlığıdır.
  • names.arg her çubuğun altında görünen adların bir vektörüdür.
  • col grafikteki çubuklara renk vermek için kullanılır.

Misal

Yalnızca giriş vektörü ve her çubuğun adı kullanılarak basit bir çubuk grafik oluşturulur.

Aşağıdaki komut dosyası, çubuk grafiği oluşturacak ve geçerli R çalışma dizininde kaydedecektir.

# Create the data for the chart
H <- c(7,12,28,3,41)

# Give the chart file a name
png(file = "barchart.png")

# Plot the bar chart 
barplot(H)

# Save the file
dev.off()

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu verir -

Çubuk Grafik Etiketleri, Başlık ve Renkler

Çubuk grafiğin özellikleri, daha fazla parametre eklenerek genişletilebilir. main parametre eklemek için kullanılır title. colparametresi çubuklara renk eklemek için kullanılır. args.name her çubuğun anlamını açıklamak için giriş vektörüyle aynı sayıda değere sahip bir vektördür.

Misal

Aşağıdaki komut dosyası, çubuk grafiği oluşturacak ve geçerli R çalışma dizininde kaydedecektir.

# Create the data for the chart
H <- c(7,12,28,3,41)
M <- c("Mar","Apr","May","Jun","Jul")

# Give the chart file a name
png(file = "barchart_months_revenue.png")

# Plot the bar chart 
barplot(H,names.arg=M,xlab="Month",ylab="Revenue",col="blue",
main="Revenue chart",border="red")

# Save the file
dev.off()

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu verir -

Grup Çubuk Grafik ve Yığılmış Çubuk Grafik

Giriş değerleri olarak bir matris kullanarak her çubukta çubuk grupları ve yığınları olan çubuk grafik oluşturabiliriz.

İkiden fazla değişken, grup çubuk grafiği ve yığınlı çubuk grafik oluşturmak için kullanılan bir matris olarak temsil edilir.

# Create the input vectors.
colors = c("green","orange","brown")
months <- c("Mar","Apr","May","Jun","Jul")
regions <- c("East","West","North")

# Create the matrix of the values.
Values <- matrix(c(2,9,3,11,9,4,8,7,3,12,5,2,8,10,11), nrow = 3, ncol = 5, byrow = TRUE)

# Give the chart file a name
png(file = "barchart_stacked.png")

# Create the bar chart
barplot(Values, main = "total revenue", names.arg = months, xlab = "month", ylab = "revenue", col = colors)

# Add the legend to the chart
legend("topleft", regions, cex = 1.3, fill = colors)

# Save the file
dev.off()

Kutu grafikleri, bir veri kümesindeki verilerin ne kadar iyi dağıtıldığının bir ölçüsüdür. Veri kümesini üç çeyreğe ayırır. Bu grafik, veri setindeki minimum, maksimum, medyan, ilk çeyrek ve üçüncü çeyrek temsil eder. Ayrıca, her biri için kutu grafikleri çizerek veri kümeleri arasında verilerin dağılımını karşılaştırmak için de yararlıdır.

Kutu grafikleri, R'de boxplot() işlevi.

Sözdizimi

R'de bir kutu grafiği oluşturmak için temel sözdizimi -

boxplot(x, data, notch, varwidth, names, main)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x bir vektör veya formüldür.

  • data veri çerçevesidir.

  • notchmantıksal bir değerdir. Bir çentik çizmek için DOĞRU olarak ayarlayın.

  • varwidthmantıksal bir değerdir. Örnek boyutuyla orantılı olarak kutunun genişliğini çizmek için true olarak ayarlayın.

  • names her kutu grafiğinin altına basılacak grup etiketleridir.

  • main grafiğe bir başlık vermek için kullanılır.

Misal

Temel bir kutu grafiği oluşturmak için R ortamında bulunan "mtcars" veri setini kullanıyoruz. Mtcars'taki "mpg" ve "cyl" sütunlarına bakalım.

input <- mtcars[,c('mpg','cyl')]
print(head(input))

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu verir -

mpg  cyl
Mazda RX4         21.0   6
Mazda RX4 Wag     21.0   6
Datsun 710        22.8   4
Hornet 4 Drive    21.4   6
Hornet Sportabout 18.7   8
Valiant           18.1   6

Kutu Grafiğini Oluşturmak

Aşağıdaki komut dosyası, mpg (galon başına mil) ve cyl (silindir sayısı) arasındaki ilişki için bir kutu grafiği grafiği oluşturacaktır.

# Give the chart file a name.
png(file = "boxplot.png")

# Plot the chart.
boxplot(mpg ~ cyl, data = mtcars, xlab = "Number of Cylinders",
   ylab = "Miles Per Gallon", main = "Mileage Data")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Notch ile Boxplot

Farklı veri gruplarının medyanlarının birbirleriyle nasıl eşleştiğini bulmak için çentikli kutu grafiği çizebiliriz.

Aşağıdaki komut dosyası, veri gruplarının her biri için çentikli bir kutu çizimi grafiği oluşturacaktır.

# Give the chart file a name.
png(file = "boxplot_with_notch.png")

# Plot the chart.
boxplot(mpg ~ cyl, data = mtcars, 
   xlab = "Number of Cylinders",
   ylab = "Miles Per Gallon", 
   main = "Mileage Data",
   notch = TRUE, 
   varwidth = TRUE, 
   col = c("green","yellow","purple"),
   names = c("High","Medium","Low")
)
# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Histogram, aralıklar halinde paketlenmiş bir değişkenin değerlerinin frekanslarını temsil eder. Histogram, çubuk sohbetine benzer, ancak fark, değerleri sürekli aralıklar halinde gruplandırmasıdır. Histogramdaki her çubuk, o aralıkta bulunan değerlerin yüksekliğini temsil eder.

R kullanarak histogram oluşturur hist()işlevi. Bu işlev bir vektörü girdi olarak alır ve histogramları çizmek için daha fazla parametre kullanır.

Sözdizimi

R kullanarak bir histogram oluşturmak için temel sözdizimi -

hist(v,main,xlab,xlim,ylim,breaks,col,border)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • v histogramda kullanılan sayısal değerleri içeren bir vektördür.

  • main grafiğin başlığını gösterir.

  • col çubukların rengini ayarlamak için kullanılır.

  • border her çubuğun kenarlık rengini ayarlamak için kullanılır.

  • xlab x ekseninin tanımını vermek için kullanılır.

  • xlim x eksenindeki değer aralığını belirtmek için kullanılır.

  • ylim y eksenindeki değer aralığını belirtmek için kullanılır.

  • breaks her çubuğun genişliğini belirtmek için kullanılır.

Misal

Giriş vektörü, etiket, sütun ve sınır parametreleri kullanılarak basit bir histogram oluşturulur.

Aşağıda verilen komut dosyası histogramı oluşturacak ve mevcut R çalışma dizinine kaydedecektir.

# Create data for the graph.
v <-  c(9,13,21,8,36,22,12,41,31,33,19)

# Give the chart file a name.
png(file = "histogram.png")

# Create the histogram.
hist(v,xlab = "Weight",col = "yellow",border = "blue")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

X ve Y değerleri aralığı

X ekseni ve Y ekseninde izin verilen değer aralığını belirtmek için xlim ve ylim parametrelerini kullanabiliriz.

Çubuğun her birinin genişliği, molalar kullanılarak belirlenebilir.

# Create data for the graph.
v <- c(9,13,21,8,36,22,12,41,31,33,19)

# Give the chart file a name.
png(file = "histogram_lim_breaks.png")

# Create the histogram.
hist(v,xlab = "Weight",col = "green",border = "red", xlim = c(0,40), ylim = c(0,5),
   breaks = 5)

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Çizgi grafik, aralarında çizgi parçaları çizerek bir dizi noktayı birbirine bağlayan bir grafiktir. Bu noktalar, koordinatlarından (genellikle x koordinatı) birinde sıralanır. Çizgi grafikler genellikle verilerdeki eğilimleri belirlemede kullanılır.

plot() R'deki fonksiyon çizgi grafiği oluşturmak için kullanılır.

Sözdizimi

R'de bir çizgi grafik oluşturmak için temel sözdizimi -

plot(v,type,col,xlab,ylab)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • v sayısal değerleri içeren bir vektördür.

  • type yalnızca noktaları çizmek için "p" değerini, yalnızca çizgileri çizmek için "l" ve hem noktaları hem de çizgileri çizmek için "o" değerini alır.

  • xlab x ekseni için etikettir.

  • ylab y ekseni için etikettir.

  • main grafiğin Başlığıdır.

  • col hem noktalara hem de çizgilere renk vermek için kullanılır.

Misal

Giriş vektörü ve "O" olarak tip parametresi kullanılarak basit bir çizgi grafiği oluşturulur. Aşağıdaki komut dosyası, geçerli R çalışma dizininde bir çizgi grafiği oluşturacak ve kaydedecektir.

# Create the data for the chart.
v <- c(7,12,28,3,41)

# Give the chart file a name.
png(file = "line_chart.jpg")

# Plot the bar chart. 
plot(v,type = "o")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Çizgi Grafik Başlığı, Rengi ve Etiketler

Çizgi grafiğin özellikleri ek parametreler kullanılarak genişletilebilir. Noktalara ve çizgilere renk katıyoruz, grafiğe bir başlık veriyoruz ve eksenlere etiketler ekliyoruz.

Misal

# Create the data for the chart.
v <- c(7,12,28,3,41)

# Give the chart file a name.
png(file = "line_chart_label_colored.jpg")

# Plot the bar chart.
plot(v,type = "o", col = "red", xlab = "Month", ylab = "Rain fall",
   main = "Rain fall chart")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Çizgi Grafikte Birden Çok Çizgi

Kullanılarak aynı grafik üzerinde birden fazla çizgi çizilebilir. lines()işlevi.

İlk çizgi çizildikten sonra, lines () fonksiyonu, grafikte ikinci çizgiyi çizmek için girdi olarak ek bir vektör kullanabilir,

# Create the data for the chart.
v <- c(7,12,28,3,41)
t <- c(14,7,6,19,3)

# Give the chart file a name.
png(file = "line_chart_2_lines.jpg")

# Plot the bar chart.
plot(v,type = "o",col = "red", xlab = "Month", ylab = "Rain fall", 
   main = "Rain fall chart")

lines(t, type = "o", col = "blue")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Dağılım grafikleri, Kartezyen düzlemde çizilen birçok noktayı gösterir. Her nokta, iki değişkenin değerlerini temsil eder. Bir değişken yatay eksende ve diğeri dikey eksende seçilir.

Basit dağılım grafiği, plot() işlevi.

Sözdizimi

R'de dağılım grafiği oluşturmak için temel sözdizimi -

plot(x, y, main, xlab, ylab, xlim, ylim, axes)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x değerleri yatay koordinatlar olan veri kümesidir.

  • y değerleri dikey koordinatlar olan veri kümesidir.

  • main grafiğin döşemesidir.

  • xlab yatay eksendeki etikettir.

  • ylab dikey eksendeki etikettir.

  • xlim çizim için kullanılan x değerlerinin sınırlarıdır.

  • ylim çizim için kullanılan y değerlerinin sınırlarıdır.

  • axes her iki eksenin de çizim üzerinde çizilmesi gerekip gerekmediğini gösterir.

Misal

Veri setini kullanıyoruz "mtcars"R ortamında temel bir dağılım grafiği oluşturmak için kullanılabilir. Mtcarlarda "wt" ve "mpg" sütunlarını kullanalım.

input <- mtcars[,c('wt','mpg')]
print(head(input))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

wt      mpg
Mazda RX4           2.620   21.0
Mazda RX4 Wag       2.875   21.0
Datsun 710          2.320   22.8
Hornet 4 Drive      3.215   21.4
Hornet Sportabout   3.440   18.7
Valiant             3.460   18.1

Dağılım Grafiği Oluşturma

Aşağıdaki komut dosyası, wt (ağırlık) ve mpg (galon başına mil) arasındaki ilişki için bir dağılım grafiği grafiği oluşturacaktır.

# Get the input values.
input <- mtcars[,c('wt','mpg')]

# Give the chart file a name.
png(file = "scatterplot.png")

# Plot the chart for cars with weight between 2.5 to 5 and mileage between 15 and 30.
plot(x = input$wt,y = input$mpg,
   xlab = "Weight",
   ylab = "Milage",
   xlim = c(2.5,5),
   ylim = c(15,30),		 
   main = "Weight vs Milage"
)
	 
# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Dağılım grafiği Matrisleri

İkiden fazla değişkenimiz olduğunda ve bir değişkenle diğer değişkenler arasındaki korelasyonu bulmak istediğimizde dağılım grafiği matrisini kullanırız. Kullanırızpairs() dağılım grafiklerinin matrislerini oluşturma işlevi.

Sözdizimi

R'de dağılım grafiği matrisleri oluşturmak için temel sözdizimi -

pairs(formula, data)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • formula çiftler halinde kullanılan değişken serisini temsil eder.

  • data değişkenlerin alınacağı veri setini temsil eder.

Misal

Her değişken, kalan değişkenlerin her biriyle eşleştirilir. Her çift için bir dağılım grafiği çizilir.

# Give the chart file a name.
png(file = "scatterplot_matrices.png")

# Plot the matrices between 4 variables giving 12 plots.

# One variable with 3 others and total 4 variables.

pairs(~wt+mpg+disp+cyl,data = mtcars,
   main = "Scatterplot Matrix")

# Save the file.
dev.off()

Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı alıyoruz.

R'deki istatistiksel analiz, birçok yerleşik işlev kullanılarak gerçekleştirilir. Bu işlevlerin çoğu R temel paketinin parçasıdır. Bu fonksiyonlar R vektörünü argümanlarla birlikte girdi olarak alır ve sonucu verir.

Bu bölümde tartıştığımız işlevler ortalama, medyan ve moddur.

Anlamına gelmek

Bir veri serisindeki değerlerin toplamı alınarak ve değerlerin sayısına bölünerek hesaplanır.

İşlev mean() bunu R'de hesaplamak için kullanılır.

Sözdizimi

R'deki ortalamayı hesaplamak için temel sözdizimi -

mean(x, trim = 0, na.rm = FALSE, ...)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x girdi vektörüdür.

  • trim sıralanmış vektörün her iki ucundan bazı gözlemleri bırakmak için kullanılır.

  • na.rm eksik değerleri giriş vektöründen çıkarmak için kullanılır.

Misal

# Create a vector. 
x <- c(12,7,3,4.2,18,2,54,-21,8,-5)

# Find Mean.
result.mean <- mean(x)
print(result.mean)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 8.22

Kırpma Seçeneğini Uygulama

Kırpma parametresi sağlandığında, vektördeki değerler sıralanır ve ardından gerekli gözlem sayısı ortalamanın hesaplanmasından çıkarılır.

Trim = 0.3 olduğunda, ortalamayı bulmak için her uçtan 3 değer hesaplamalardan çıkarılacaktır.

Bu durumda sıralanmış vektör (−21, −5, 2, 3, 4.2, 7, 8, 12, 18, 54) ve ortalamanın hesaplanması için vektörden çıkarılan değerler (−21, −5,2) soldan ve (12,18,54) sağdan.

# Create a vector.
x <- c(12,7,3,4.2,18,2,54,-21,8,-5)

# Find Mean.
result.mean <-  mean(x,trim = 0.3)
print(result.mean)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 5.55

NA Seçeneğini Uygulama

Eksik değerler varsa, ortalama işlev NA değerini döndürür.

Eksik değerleri hesaplamadan çıkarmak için na.rm = TRUE kullanın. bu, NA değerlerini kaldırmak anlamına gelir.

# Create a vector. 
x <- c(12,7,3,4.2,18,2,54,-21,8,-5,NA)

# Find mean.
result.mean <-  mean(x)
print(result.mean)

# Find mean dropping NA values.
result.mean <-  mean(x,na.rm = TRUE)
print(result.mean)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] NA
[1] 8.22

Medyan

Bir veri serisindeki en ortadaki değere medyan denir. median() fonksiyonu R'de bu değeri hesaplamak için kullanılır.

Sözdizimi

R'de medyanı hesaplamak için temel sözdizimi -

median(x, na.rm = FALSE)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x girdi vektörüdür.

  • na.rm eksik değerleri giriş vektöründen çıkarmak için kullanılır.

Misal

# Create the vector.
x <- c(12,7,3,4.2,18,2,54,-21,8,-5)

# Find the median.
median.result <- median(x)
print(median.result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 5.6

Mod

Mod, bir veri kümesinde en yüksek tekrar sayısına sahip olan değerdir. Ortalama ve medyandan farklı olarak, mod hem sayısal hem de karakter verilerine sahip olabilir.

R, modu hesaplamak için standart yerleşik bir işleve sahip değildir. Bu nedenle, R'deki bir veri kümesinin modunu hesaplamak için bir kullanıcı işlevi oluştururuz. Bu işlev, vektörü girdi olarak alır ve mod değerini çıktı olarak verir.

Misal

# Create the function.
getmode <- function(v) {
   uniqv <- unique(v)
   uniqv[which.max(tabulate(match(v, uniqv)))]
}

# Create the vector with numbers.
v <- c(2,1,2,3,1,2,3,4,1,5,5,3,2,3)

# Calculate the mode using the user function.
result <- getmode(v)
print(result)

# Create the vector with characters.
charv <- c("o","it","the","it","it")

# Calculate the mode using the user function.
result <- getmode(charv)
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 2
[1] "it"

Regresyon analizi, iki değişken arasında bir ilişki modeli oluşturmak için çok yaygın olarak kullanılan bir istatistiksel araçtır. Bu değişkenlerden biri, değeri deneylerle elde edilen yordayıcı değişken olarak adlandırılır. Diğer değişken, değeri yordayıcı değişkenden türetilen yanıt değişkeni olarak adlandırılır.

Doğrusal Regresyonda bu iki değişken, her iki değişkenin üssünün (kuvvetinin) 1 olduğu bir denklem yoluyla ilişkilidir. Matematiksel olarak doğrusal bir ilişki, grafik olarak çizildiğinde düz bir çizgiyi temsil eder. Herhangi bir değişkenin üssünün 1'e eşit olmadığı doğrusal olmayan bir ilişki bir eğri oluşturur.

Doğrusal regresyon için genel matematiksel denklem -

y = ax + b

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • y yanıt değişkendir.

  • x yordayıcı değişkendir.

  • a ve b katsayılar olarak adlandırılan sabitlerdir.

Bir Regresyon Oluşturma Adımları

Basit bir regresyon örneği, boyu bilindiğinde bir kişinin kilosunu tahmin etmektir. Bunu yapmak için bir kişinin boyu ile kilosu arasındaki ilişkiye sahip olmamız gerekir.

İlişkiyi yaratmanın adımları -

  • Gözlenen boy ve buna karşılık gelen ağırlık değerlerinden bir örnek toplama deneyini gerçekleştirin.

  • Kullanarak bir ilişki modeli oluşturun lm() R'deki fonksiyonlar

  • Oluşturulan modelden katsayıları bulun ve bunları kullanarak matematiksel denklemi oluşturun

  • Tahmindeki ortalama hatayı bilmek için ilişki modelinin bir özetini alın. Olarak da adlandırılırresiduals.

  • Yeni kişilerin ağırlığını tahmin etmek için, predict() R'de işlev

Giriş Verileri

Gözlemleri temsil eden örnek veriler aşağıdadır -

# Values of height
151, 174, 138, 186, 128, 136, 179, 163, 152, 131

# Values of weight.
63, 81, 56, 91, 47, 57, 76, 72, 62, 48

lm () İşlevi

Bu işlev, yordayıcı ve yanıt değişkeni arasındaki ilişki modelini oluşturur.

Sözdizimi

İçin temel sözdizimi lm() doğrusal regresyonda fonksiyon -

lm(formula,data)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • formula x ve y arasındaki ilişkiyi sunan bir semboldür.

  • data formülün uygulanacağı vektördür.

İlişki Modeli oluşturun ve Katsayıları alın

x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

print(relation)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
   -38.4551          0.6746

İlişkinin Özetini Alın

x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

print(summary(relation))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q     Median      3Q     Max 
-6.3002    -1.6629  0.0412    1.8944  3.9775 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -38.45509    8.04901  -4.778  0.00139 ** 
x             0.67461    0.05191  12.997 1.16e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.253 on 8 degrees of freedom
Multiple R-squared:  0.9548,    Adjusted R-squared:  0.9491 
F-statistic: 168.9 on 1 and 8 DF,  p-value: 1.164e-06

tahmin () İşlevi

Sözdizimi

Doğrusal regresyonda tahmin () için temel sözdizimi -

predict(object, newdata)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • object lm () işlevi kullanılarak önceden oluşturulmuş formüldür.

  • newdata yordayıcı değişken için yeni değeri içeren vektördür.

Yeni kişilerin ağırlığını tahmin edin

# The predictor vector.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)

# The resposne vector.
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

# Find weight of a person with height 170.
a <- data.frame(x = 170)
result <-  predict(relation,a)
print(result)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

1 
76.22869

Regresyonu Grafik Olarak Görselleştirin

# Create the predictor and response variable.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
relation <- lm(y~x)

# Give the chart file a name.
png(file = "linearregression.png")

# Plot the chart.
plot(y,x,col = "blue",main = "Height & Weight Regression",
abline(lm(x~y)),cex = 1.3,pch = 16,xlab = "Weight in Kg",ylab = "Height in cm")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Çoklu regresyon, ikiden fazla değişken arasındaki ilişkiye doğrusal regresyonun bir uzantısıdır. Basit doğrusal ilişkide bir tahmin edicimiz ve bir yanıt değişkenimiz vardır, ancak çoklu regresyonda birden fazla tahmin değişkenimiz ve bir yanıt değişkenimiz vardır.

Çoklu regresyon için genel matematiksel denklem -

y = a + b1x1 + b2x2 +...bnxn

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • y yanıt değişkendir.

  • a, b1, b2...bn katsayılardır.

  • x1, x2, ...xn tahmin değişkenleridir.

Regresyon modelini kullanarak lm()R'deki fonksiyon. Model, giriş verilerini kullanarak katsayıların değerini belirler. Daha sonra, bu katsayıları kullanarak belirli bir yordayıcı değişken seti için yanıt değişkeninin değerini tahmin edebiliriz.

lm () İşlevi

Bu işlev, yordayıcı ve yanıt değişkeni arasındaki ilişki modelini oluşturur.

Sözdizimi

İçin temel sözdizimi lm() çoklu regresyondaki fonksiyon -

lm(y ~ x1+x2+x3...,data)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • formula yanıt değişkeni ile yordayıcı değişkenler arasındaki ilişkiyi sunan bir semboldür.

  • data formülün uygulanacağı vektördür.

Misal

Giriş Verileri

R ortamında bulunan "mtcars" veri setini düşünün. Galon başına kilometre (mpg), silindir deplasmanı ("disp"), beygir gücü ("hp"), arabanın ağırlığı ("wt") ve daha fazla parametre açısından farklı araba modelleri arasında bir karşılaştırma sağlar.

Modelin amacı, bir yanıt değişkeni olarak "mpg" ile tahmin değişkenleri olarak "disp", "hp" ve "wt" arasındaki ilişkiyi kurmaktır. Bu amaçla mtcars veri setinden bu değişkenlerin bir alt kümesini oluşturuyoruz.

input <- mtcars[,c("mpg","disp","hp","wt")]
print(head(input))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

mpg   disp   hp    wt
Mazda RX4          21.0  160    110   2.620
Mazda RX4 Wag      21.0  160    110   2.875
Datsun 710         22.8  108     93   2.320
Hornet 4 Drive     21.4  258    110   3.215
Hornet Sportabout  18.7  360    175   3.440
Valiant            18.1  225    105   3.460

İlişki Modeli oluşturun ve Katsayıları alın

input <- mtcars[,c("mpg","disp","hp","wt")]

# Create the relationship model.
model <- lm(mpg~disp+hp+wt, data = input)

# Show the model.
print(model)

# Get the Intercept and coefficients as vector elements.
cat("# # # # The Coefficient Values # # # ","\n")

a <- coef(model)[1]
print(a)

Xdisp <- coef(model)[2]
Xhp <- coef(model)[3]
Xwt <- coef(model)[4]

print(Xdisp)
print(Xhp)
print(Xwt)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Call:
lm(formula = mpg ~ disp + hp + wt, data = input)

Coefficients:
(Intercept)         disp           hp           wt  
  37.105505      -0.000937        -0.031157    -3.800891  

# # # # The Coefficient Values # # # 
(Intercept) 
   37.10551 
         disp 
-0.0009370091 
         hp 
-0.03115655 
       wt 
-3.800891

Regresyon Modeli için Denklem Oluşturun

Yukarıdaki kesişme ve katsayı değerlerine dayanarak matematiksel denklemi oluşturuyoruz.

Y = a+Xdisp.x1+Xhp.x2+Xwt.x3
or
Y = 37.15+(-0.000937)*x1+(-0.0311)*x2+(-3.8008)*x3

Yeni Değerleri tahmin etmek için Denklem uygulayın

Yer değiştirme, beygir gücü ve ağırlık için yeni bir değerler kümesi sağlandığında kilometreyi tahmin etmek için yukarıda oluşturulan regresyon denklemini kullanabiliriz.

Disp = 221, hp = 102 ve wt = 2.91 olan bir otomobil için tahmini kilometre -

Y = 37.15+(-0.000937)*221+(-0.0311)*102+(-3.8008)*2.91 = 22.7104

Lojistik Regresyon, yanıt değişkeninin (bağımlı değişken) Doğru / Yanlış veya 0/1 gibi kategorik değerlere sahip olduğu bir regresyon modelidir. Aslında, bir ikili cevabın olasılığını, tahmin değişkenleriyle ilişkilendiren matematiksel denkleme dayalı olarak yanıt değişkeninin değeri olarak ölçer.

Lojistik regresyon için genel matematiksel denklem -

y = 1/(1+e^-(a+b1x1+b2x2+b3x3+...))

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • y yanıt değişkendir.

  • x yordayıcı değişkendir.

  • a ve b sayısal sabitler olan katsayılardır.

Regresyon modelini oluşturmak için kullanılan işlev, glm() işlevi.

Sözdizimi

İçin temel sözdizimi glm() lojistik regresyondaki fonksiyon -

glm(formula,data,family)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • formula değişkenler arasındaki ilişkiyi gösteren semboldür.

  • data bu değişkenlerin değerlerini veren veri setidir.

  • familymodelin ayrıntılarını belirtmek için R nesnesidir. Lojistik regresyon için değeri iki terimli.

Misal

Dahili veri seti "mtcars", çeşitli motor özellikleriyle bir otomobilin farklı modellerini tanımlar. "Mtcars" veri setinde, iletim modu (otomatik veya manuel), ikili bir değer (0 veya 1) olan am sütunu ile tanımlanır. "Am" sütunları ile diğer 3 sütun - hp, wt ve cyl arasında lojistik regresyon modeli oluşturabiliriz.

# Select some columns form mtcars.
input <- mtcars[,c("am","cyl","hp","wt")]

print(head(input))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

am   cyl  hp    wt
Mazda RX4          1   6    110   2.620
Mazda RX4 Wag      1   6    110   2.875
Datsun 710         1   4     93   2.320
Hornet 4 Drive     0   6    110   3.215
Hornet Sportabout  0   8    175   3.440
Valiant            0   6    105   3.460

Regresyon Modeli Oluşturun

Kullanıyoruz glm() regresyon modelini oluşturma ve analiz için özetini alma işlevi.

input <- mtcars[,c("am","cyl","hp","wt")]

am.data = glm(formula = am ~ cyl + hp + wt, data = input, family = binomial)

print(summary(am.data))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Call:
glm(formula = am ~ cyl + hp + wt, family = binomial, data = input)

Deviance Residuals: 
     Min        1Q      Median        3Q       Max  
-2.17272     -0.14907  -0.01464     0.14116   1.27641  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept) 19.70288    8.11637   2.428   0.0152 *
cyl          0.48760    1.07162   0.455   0.6491  
hp           0.03259    0.01886   1.728   0.0840 .
wt          -9.14947    4.15332  -2.203   0.0276 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 43.2297  on 31  degrees of freedom
Residual deviance:  9.8415  on 28  degrees of freedom
AIC: 17.841

Number of Fisher Scoring iterations: 8

Sonuç

Özet olarak, son sütundaki p değeri, "cyl" ve "hp" değişkenleri için 0,05'ten fazla olduğundan, "am" değişkeninin değerine katkıda bulunmada bunların önemsiz olduğunu düşünüyoruz. Bu regresyon modelinde sadece ağırlık (wt) "am" değerini etkiler.

Bağımsız kaynaklardan rastgele bir veri toplanmasında, genellikle verilerin dağılımının normal olduğu gözlemlenir. Yani, yatay eksendeki değişkenin değeri ve dikey eksendeki değerlerin sayısı ile bir grafik çizerken bir çan şekli eğrisi elde ederiz. Eğrinin merkezi, veri kümesinin ortalamasını temsil eder. Grafikte, değerlerin yüzde ellisi ortalamanın solunda ve diğer yüzde ellisi grafiğin sağında yer alır. Bu istatistikte normal dağılım olarak adlandırılır.

R normal dağılım oluşturmak için dört yerleşik işleve sahiptir. Aşağıda açıklanmıştır.

dnorm(x, mean, sd)
pnorm(x, mean, sd)
qnorm(p, mean, sd)
rnorm(n, mean, sd)

Aşağıdaki fonksiyonlarda kullanılan parametrelerin açıklaması aşağıdadır -

  • x sayıların bir vektörüdür.

  • p bir olasılık vektörüdür.

  • n gözlem sayısıdır (örneklem büyüklüğü).

  • meanörnek verilerin ortalama değeridir. Varsayılan değeri sıfırdır.

  • sdstandart sapmadır. Varsayılan değeri 1'dir.

dnorm ()

Bu fonksiyon, verilen bir ortalama ve standart sapma için her noktada olasılık dağılımının yüksekliğini verir.

# Create a sequence of numbers between -10 and 10 incrementing by 0.1.
x <- seq(-10, 10, by = .1)

# Choose the mean as 2.5 and standard deviation as 0.5.
y <- dnorm(x, mean = 2.5, sd = 0.5)

# Give the chart file a name.
png(file = "dnorm.png")

plot(x,y)

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

pnorm ()

Bu işlev, normal olarak dağıtılan rastgele bir sayının, belirli bir sayının değerinden daha az olma olasılığını verir. Aynı zamanda "Kümülatif Dağıtım Fonksiyonu" olarak da adlandırılır.

# Create a sequence of numbers between -10 and 10 incrementing by 0.2.
x <- seq(-10,10,by = .2)
 
# Choose the mean as 2.5 and standard deviation as 2. 
y <- pnorm(x, mean = 2.5, sd = 2)

# Give the chart file a name.
png(file = "pnorm.png")

# Plot the graph.
plot(x,y)

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

qnorm ()

Bu fonksiyon, olasılık değerini alır ve kümülatif değeri olasılık değeriyle eşleşen bir sayı verir.

# Create a sequence of probability values incrementing by 0.02.
x <- seq(0, 1, by = 0.02)

# Choose the mean as 2 and standard deviation as 3.
y <- qnorm(x, mean = 2, sd = 1)

# Give the chart file a name.
png(file = "qnorm.png")

# Plot the graph.
plot(x,y)

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

rnorm ()

Bu işlev, dağılımı normal olan rastgele sayılar üretmek için kullanılır. Örnek boyutunu girdi olarak alır ve o kadar çok rastgele sayı üretir. Oluşturulan sayıların dağılımını göstermek için bir histogram çiziyoruz.

# Create a sample of 50 numbers which are normally distributed.
y <- rnorm(50)

# Give the chart file a name.
png(file = "rnorm.png")

# Plot the histogram for this sample.
hist(y, main = "Normal DIstribution")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Binom dağılım modeli, bir dizi deneyde yalnızca iki olası sonucu olan bir olayın başarı olasılığını bulmakla ilgilenir. Örneğin, yazı tura atmak her zaman bir kafa veya kuyruk verir. Bir jetonu 10 kez tekrar tekrar atarken tam olarak 3 tur bulma olasılığı binom dağılımı sırasında tahmin edilir.

R, iki terimli dağılım oluşturmak için dört yerleşik işleve sahiptir. Aşağıda açıklanmıştır.

dbinom(x, size, prob)
pbinom(x, size, prob)
qbinom(p, size, prob)
rbinom(n, size, prob)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • x sayıların bir vektörüdür.

  • p bir olasılık vektörüdür.

  • n gözlem sayısıdır.

  • size deneme sayısıdır.

  • prob her denemenin başarı olasılığıdır.

dbinom ()

Bu fonksiyon, her noktada olasılık yoğunluk dağılımını verir.

# Create a sample of 50 numbers which are incremented by 1.
x <- seq(0,50,by = 1)

# Create the binomial distribution.
y <- dbinom(x,50,0.5)

# Give the chart file a name.
png(file = "dbinom.png")

# Plot the graph for this sample.
plot(x,y)

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

pbinom ()

Bu işlev, bir olayın kümülatif olasılığını verir. Olasılığı temsil eden tek bir değerdir.

# Probability of getting 26 or less heads from a 51 tosses of a coin.
x <- pbinom(26,51,0.5)

print(x)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 0.610116

qbinom ()

Bu fonksiyon, olasılık değerini alır ve kümülatif değeri olasılık değeriyle eşleşen bir sayı verir.

# How many heads will have a probability of 0.25 will come out when a coin
# is tossed 51 times.
x <- qbinom(0.25,51,1/2)

print(x)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 23

rbinom ()

Bu işlev, belirli bir örnekten belirli olasılıkların gerekli sayıda rastgele değerini üretir.

# Find 8 random values from a sample of 150 with probability of 0.4.
x <- rbinom(8,150,.4)

print(x)

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 58 61 59 66 55 60 61 67

Poisson Regresyon, yanıt değişkeninin kesirli sayılar değil sayılar biçiminde olduğu regresyon modellerini içerir. Örneğin, bir futbol maçı serisindeki doğum sayısı veya galibiyet sayısı. Ayrıca yanıt değişkenlerinin değerleri bir Poisson dağılımını izler.

Poisson regresyonunun genel matematiksel denklemi -

log(y) = a + b1x1 + b2x2 + bnxn.....

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • y yanıt değişkendir.

  • a ve b sayısal katsayılardır.

  • x yordayıcı değişkendir.

Poisson regresyon modelini oluşturmak için kullanılan işlev, glm() işlevi.

Sözdizimi

İçin temel sözdizimi glm() Poisson regresyonunda fonksiyon -

glm(formula,data,family)

Aşağıdaki fonksiyonlarda kullanılan parametrelerin açıklaması aşağıdadır -

  • formula değişkenler arasındaki ilişkiyi gösteren semboldür.

  • data bu değişkenlerin değerlerini veren veri setidir.

  • familymodelin ayrıntılarını belirtmek için R nesnesidir. Lojistik Regresyon için değeri 'Poisson'dur.

Misal

Yün tipi (A veya B) ve gerginliğin (düşük, orta veya yüksek) dokuma tezgahı başına çözgü kopuşu sayısı üzerindeki etkisini tanımlayan dahili veri seti "çözgü kırılmaları" na sahibiz. "Kesmeleri", kırılma sayısı olan yanıt değişkeni olarak düşünelim. Yünün "tipi" ve "gerilimi" yordayıcı değişkenler olarak alınır.

Input Data

input <- warpbreaks
print(head(input))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

breaks   wool  tension
1     26       A     L
2     30       A     L
3     54       A     L
4     25       A     L
5     70       A     L
6     52       A     L

Regresyon Modeli Oluşturun

output <-glm(formula = breaks ~ wool+tension, data = warpbreaks,
   family = poisson)
print(summary(output))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Call:
glm(formula = breaks ~ wool + tension, family = poisson, data = warpbreaks)

Deviance Residuals: 
    Min       1Q     Median       3Q      Max  
  -3.6871  -1.6503  -0.4269     1.1902   4.2616  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  3.69196    0.04541  81.302  < 2e-16 ***
woolB       -0.20599    0.05157  -3.994 6.49e-05 ***
tensionM    -0.32132    0.06027  -5.332 9.73e-08 ***
tensionH    -0.51849    0.06396  -8.107 5.21e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 297.37  on 53  degrees of freedom
Residual deviance: 210.39  on 50  degrees of freedom
AIC: 493.06

Number of Fisher Scoring iterations: 4

Özet olarak, tahmin değişkeninin yanıt değişkeni üzerindeki etkisini değerlendirmek için son sütundaki p değerinin 0,05'ten küçük olmasını arıyoruz. Görüldüğü gibi, M ve H gerilim tipine sahip yün tipi B, kırılmaların sayısı üzerinde etkiye sahiptir.

Yordayıcı değişkenlerdeki varyasyonun yanıt değişkeni üzerindeki etkisini tanımlayan modeller oluşturmak için Regresyon analizini kullanırız. Bazen, Evet / Hayır veya Erkek / Kadın gibi değerlere sahip kategorik bir değişkenimiz varsa. Basit regresyon analizi, kategorik değişkenin her bir değeri için birden fazla sonuç verir. Böyle bir senaryoda, kategorik değişkenin etkisini yordayıcı değişkenle birlikte kullanarak ve kategorik değişkenin her seviyesi için regresyon çizgilerini karşılaştırarak inceleyebiliriz. Böyle bir analiz şu şekilde adlandırılır:Analysis of Covariance olarak da adlandırılır ANCOVA.

Misal

R yerleşik veri seti mtcars'ı düşünün. İçinde "am" alanının aktarım türünü (otomatik veya manuel) temsil ettiğini gözlemliyoruz. 0 ve 1 değerlerine sahip kategorik bir değişkendir. Bir arabanın galon başına mil değeri (mpg), beygir gücünün ("hp") değerinin yanı sıra ona da bağlı olabilir.

"Am" değerinin "mpg" ve "hp" arasındaki regresyon üzerindeki etkisini inceliyoruz. Kullanılarak yapılıraov() işlevi ve ardından anova() çoklu regresyonları karşılaştırma işlevi.

Giriş Verileri

Mtcars veri setinden "mpg", "hp" ve "am" alanlarını içeren bir veri çerçevesi oluşturun. Burada yanıt değişkeni olarak "mpg" yi, tahmin değişkeni olarak "hp" yi ve kategorik değişken olarak "am" yı alıyoruz.

input <- mtcars[,c("am","mpg","hp")]
print(head(input))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

am   mpg   hp
Mazda RX4          1    21.0  110
Mazda RX4 Wag      1    21.0  110
Datsun 710         1    22.8   93
Hornet 4 Drive     0    21.4  110
Hornet Sportabout  0    18.7  175
Valiant            0    18.1  105

ANCOVA Analizi

Öngörücü değişken olarak "hp" yi ve yanıt değişkeni olarak "mpg" yi "am" ve "hp" arasındaki etkileşimi hesaba katarak bir regresyon modeli oluşturuyoruz.

Kategorik değişken ve yordayıcı değişken arasındaki etkileşimli model

# Get the dataset.
input <- mtcars

# Create the regression model.
result <- aov(mpg~hp*am,data = input)
print(summary(result))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4  77.391 1.50e-09 ***
am           1  202.2   202.2  23.072 4.75e-05 ***
hp:am        1    0.0     0.0   0.001    0.981    
Residuals   28  245.4     8.8                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Bu sonuç, her iki durumda da p değeri 0,05'ten az olduğundan, hem beygir gücü hem de şanzıman türünün galon başına mil üzerinde önemli etkiye sahip olduğunu göstermektedir. Ancak bu iki değişken arasındaki etkileşim, p değeri 0.05'ten fazla olduğu için anlamlı değildir.

Kategorik değişken ile yordayıcı değişken arasında etkileşim olmadan model

# Get the dataset.
input <- mtcars

# Create the regression model.
result <- aov(mpg~hp+am,data = input)
print(summary(result))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Df  Sum Sq  Mean Sq   F value   Pr(>F)    
hp           1  678.4   678.4   80.15 7.63e-10 ***
am           1  202.2   202.2   23.89 3.46e-05 ***
Residuals   29  245.4     8.5                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Bu sonuç, her iki durumda da p değeri 0,05'ten az olduğundan, hem beygir gücü hem de şanzıman türünün galon başına mil üzerinde önemli etkiye sahip olduğunu göstermektedir.

İki Modeli Karşılaştırmak

Şimdi, değişkenlerin etkileşiminin gerçekten anlamlı olup olmadığı sonucuna varmak için iki modeli karşılaştırabiliriz. Bunun için kullanıyoruzanova() işlevi.

# Get the dataset.
input <- mtcars

# Create the regression models.
result1 <- aov(mpg~hp*am,data = input)
result2 <- aov(mpg~hp+am,data = input)

# Compare the two models.
print(anova(result1,result2))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Model 1: mpg ~ hp * am
Model 2: mpg ~ hp + am
  Res.Df    RSS Df  Sum of Sq     F Pr(>F)
1     28 245.43                           
2     29 245.44 -1 -0.0052515 6e-04 0.9806

P değeri 0.05'ten büyük olduğu için, beygir gücü ile aktarım türü arasındaki etkileşimin önemli olmadığı sonucuna vardık. Bu nedenle, galon başına kilometre, hem otomatik hem de manuel şanzıman modunda otomobilin beygir gücüne benzer şekilde bağlı olacaktır.

Zaman serisi, her veri noktasının bir zaman damgasıyla ilişkilendirildiği bir dizi veri noktasıdır. Basit bir örnek, borsadaki bir hisse senedinin belirli bir günde farklı zaman noktalarında fiyatıdır. Bir başka örnek, bir bölgedeki yılın farklı aylarında yağış miktarıdır. R dili, zaman serisi verilerini oluşturmak, işlemek ve çizmek için birçok işlev kullanır. Zaman serileri için veriler, adı verilen bir R nesnesinde saklanırtime-series object. Aynı zamanda bir vektör veya veri çerçevesi gibi bir R veri nesnesidir.

Zaman serisi nesnesi, ts() işlevi.

Sözdizimi

İçin temel sözdizimi ts() zaman serisi analizinde fonksiyon -

timeseries.object.name <-  ts(data, start, end, frequency)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • data zaman serilerinde kullanılan değerleri içeren bir vektör veya matristir.

  • start zaman serisindeki ilk gözlem için başlangıç ​​zamanını belirtir.

  • end zaman serisindeki son gözlemin bitiş zamanını belirtir.

  • frequency birim zamandaki gözlem sayısını belirtir.

"Veri" parametresi dışında diğer tüm parametreler isteğe bağlıdır.

Misal

Ocak 2012'den itibaren bir yerde yıllık yağış ayrıntılarını düşünün. 12 aylık bir süre için bir R zaman serisi nesnesi oluşturup grafiğini çiziyoruz.

# Get the data points in form of a R vector.
rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)

# Convert it to a time series object.
rainfall.timeseries <- ts(rainfall,start = c(2012,1),frequency = 12)

# Print the timeseries data.
print(rainfall.timeseries)

# Give the chart file a name.
png(file = "rainfall.png")

# Plot a graph of the time series.
plot(rainfall.timeseries)

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu ve grafiği üretir -

Jan    Feb    Mar    Apr    May     Jun    Jul    Aug    Sep
2012  799.0  1174.8  865.1  1334.6  635.4  918.5  685.5  998.6  784.2
        Oct    Nov    Dec
2012  985.0  882.8 1071.0

Zaman serisi grafiği -

Farklı Zaman Aralıkları

Değeri frequencyts () fonksiyonundaki parametre, veri noktalarının ölçüldüğü zaman aralıklarına karar verir. 12 değeri, zaman serisinin 12 aylık olduğunu gösterir. Diğer değerler ve anlamları aşağıdaki gibidir -

  • frequency = 12 veri noktalarını yılın her ayı için sabitler.

  • frequency = 4 veri noktalarını yılın her çeyreği için sabitler.

  • frequency = 6 Veri noktalarını bir saatin her 10 dakikası için sabitler.

  • frequency = 24*6 veri noktalarını günün her 10 dakikası için sabitler.

Çoklu Zaman Serileri

Her iki seriyi bir matris halinde birleştirerek birden fazla zaman serisini tek bir grafikte çizebiliriz.

# Get the data points in form of a R vector.
rainfall1 <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
rainfall2 <- 
           c(655,1306.9,1323.4,1172.2,562.2,824,822.4,1265.5,799.6,1105.6,1106.7,1337.8)

# Convert them to a matrix.
combined.rainfall <-  matrix(c(rainfall1,rainfall2),nrow = 12)

# Convert it to a time series object.
rainfall.timeseries <- ts(combined.rainfall,start = c(2012,1),frequency = 12)

# Print the timeseries data.
print(rainfall.timeseries)

# Give the chart file a name.
png(file = "rainfall_combined.png")

# Plot a graph of the time series.
plot(rainfall.timeseries, main = "Multiple Time Series")

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu ve grafiği üretir -

Series 1  Series 2
Jan 2012    799.0    655.0
Feb 2012   1174.8   1306.9
Mar 2012    865.1   1323.4
Apr 2012   1334.6   1172.2
May 2012    635.4    562.2
Jun 2012    918.5    824.0
Jul 2012    685.5    822.4
Aug 2012    998.6   1265.5
Sep 2012    784.2    799.6
Oct 2012    985.0   1105.6
Nov 2012    882.8   1106.7
Dec 2012   1071.0   1337.8

Çoklu Zaman serisi grafiği -

Regresyon analizi için gerçek dünya verilerini modellerken, nadiren modelin denkleminin doğrusal bir grafik veren doğrusal bir denklem olduğunu gözlemliyoruz. Çoğu zaman, gerçek dünya verileri modelinin denklemi, 3'ün üssü veya günah işlevi gibi daha yüksek dereceli matematiksel işlevleri içerir. Böyle bir senaryoda, modelin grafiği bir çizgi yerine bir eğri verir. Hem doğrusal hem de doğrusal olmayan regresyonun amacı, verilerinize en yakın çizgiyi veya eğriyi bulmak için modelin parametrelerinin değerlerini ayarlamaktır. Bu değerleri bulduktan sonra, yanıt değişkenini iyi bir doğrulukla tahmin edebileceğiz.

En Küçük Kareler regresyonunda, regresyon eğrisinden farklı noktaların dikey uzaklıklarının karelerinin toplamının minimize edildiği bir regresyon modeli oluşturuyoruz. Genel olarak tanımlanmış bir modelle başlar ve katsayılar için bazı değerler alırız. Daha sonra uygularıznls() Güven aralıkları ile birlikte daha doğru değerleri elde etmek için R'nin fonksiyonu.

Sözdizimi

R'de doğrusal olmayan bir en küçük kare testi oluşturmak için temel sözdizimi -

nls(formula, data, start)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • formula değişkenler ve parametreler içeren doğrusal olmayan bir model formülüdür.

  • data formüldeki değişkenleri değerlendirmek için kullanılan bir veri çerçevesidir.

  • start başlangıç ​​tahminlerinin adlandırılmış bir listesi veya adlandırılmış sayısal vektörüdür.

Misal

Katsayılarının başlangıç ​​değerlerinin varsayıldığı doğrusal olmayan bir modeli ele alacağız. Daha sonra, bu varsayılan değerlerin güven aralıklarının ne olduğunu göreceğiz, böylece bu değerlerin modele ne kadar iyi girdiğine karar verebiliriz.

Öyleyse bu amaç için aşağıdaki denklemi ele alalım -

a = b1*x^2+b2

Başlangıç ​​katsayılarının 1 ve 3 olduğunu varsayalım ve bu değerleri nls () fonksiyonuna sığdıralım.

xvalues <- c(1.6,2.1,2,2.23,3.71,3.25,3.4,3.86,1.19,2.21)
yvalues <- c(5.19,7.43,6.94,8.11,18.75,14.88,16.06,19.12,3.21,7.58)

# Give the chart file a name.
png(file = "nls.png")


# Plot these values.
plot(xvalues,yvalues)


# Take the assumed values and fit into the model.
model <- nls(yvalues ~ b1*xvalues^2+b2,start = list(b1 = 1,b2 = 3))

# Plot the chart with new data by fitting it to a prediction from 100 data points.
new.data <- data.frame(xvalues = seq(min(xvalues),max(xvalues),len = 100))
lines(new.data$xvalues,predict(model,newdata = new.data))

# Save the file.
dev.off()

# Get the sum of the squared residuals.
print(sum(resid(model)^2))

# Get the confidence intervals on the chosen values of the coefficients.
print(confint(model))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

[1] 1.081935
Waiting for profiling to be done...
       2.5%    97.5%
b1 1.137708 1.253135
b2 1.497364 2.496484

B1'in değerinin 1'e, b2'nin değerinin 3'e değil 2'ye daha yakın olduğu sonucuna varabiliriz.

Karar ağacı, seçenekleri ve sonuçlarını bir ağaç şeklinde temsil eden bir grafiktir. Grafikteki düğümler bir olayı veya seçimi temsil eder ve grafiğin kenarları karar kurallarını veya koşullarını temsil eder. Çoğunlukla Makine Öğrenimi ve Veri Madenciliği uygulamalarında R kullanarak kullanılır.

Karar ağının kullanımına örnekler - bir e-postayı istenmeyen posta olarak veya istenmeyen posta olarak tahmin etmek, bir tümörün kanserli olduğunu tahmin etmek veya bunların her birindeki faktörlere dayalı olarak bir krediyi iyi veya kötü bir kredi riski olarak tahmin etmektir. Genel olarak, eğitim verileri olarak da adlandırılan gözlemlenen verilerle bir model oluşturulur. Ardından modeli doğrulamak ve iyileştirmek için bir dizi doğrulama verisi kullanılır. R, karar ağaçları oluşturmak ve görselleştirmek için kullanılan paketlere sahiptir. Yeni öngörücü değişken kümesi için, verilerin kategorisi (evet / Hayır, istenmeyen posta / istenmeyen posta değil) hakkında bir karara varmak için bu modeli kullanırız.

R paketi "party" karar ağaçları oluşturmak için kullanılır.

R Paketini Kurun

Paketi yüklemek için R konsolunda aşağıdaki komutu kullanın. Ayrıca varsa bağımlı paketleri de kurmanız gerekir.

install.packages("party")

"Parti" paketinin işlevi vardır ctree() karar ağacı oluşturmak ve analiz etmek için kullanılır.

Sözdizimi

R'de bir karar ağacı oluşturmak için temel sözdizimi -

ctree(formula, data)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • formula yordayıcı ve yanıt değişkenlerini açıklayan bir formüldür.

  • data kullanılan veri kümesinin adıdır.

Giriş Verileri

Adlı yerleşik R veri kümesini kullanacağız readingSkillsbir karar ağacı oluşturmak için. "Yaş", "ayakkabı boyu", "puan" değişkenlerini ve kişinin anadili olup olmadığını bildiğimizde, kişinin okuma becerilerinin puanını açıklar.

İşte örnek veriler.

# Load the party package. It will automatically load other
# dependent packages.
library(party)

# Print some records from data set readingSkills.
print(head(readingSkills))

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu ve grafiği üretir -

nativeSpeaker   age   shoeSize      score
1           yes     5   24.83189   32.29385
2           yes     6   25.95238   36.63105
3            no    11   30.42170   49.60593
4           yes     7   28.66450   40.28456
5           yes    11   31.88207   55.46085
6           yes    10   30.07843   52.83124
Loading required package: methods
Loading required package: grid
...............................
...............................

Misal

Kullanacağız ctree() Karar ağacını oluşturmak ve grafiğini görmek için işlev.

# Load the party package. It will automatically load other
# dependent packages.
library(party)

# Create the input data frame.
input.dat <- readingSkills[c(1:105),]

# Give the chart file a name.
png(file = "decision_tree.png")

# Create the tree.
  output.tree <- ctree(
  nativeSpeaker ~ age + shoeSize + score, 
  data = input.dat)

# Plot the tree.
plot(output.tree)

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

null device 
          1 
Loading required package: methods
Loading required package: grid
Loading required package: mvtnorm
Loading required package: modeltools
Loading required package: stats4
Loading required package: strucchange
Loading required package: zoo

Attaching package: ‘zoo’

The following objects are masked from ‘package:base’:

   as.Date, as.Date.numeric

Loading required package: sandwich

Sonuç

Yukarıda gösterilen karar ağacından, okuma becerileri puanı 38,3'ün altında ve yaşı 6'dan büyük olanların anadil konuşmacı olmadığı sonucuna varabiliriz.

Rastgele orman yaklaşımında çok sayıda karar ağacı oluşturulur. Her gözlem, her karar ağacına beslenir. Her gözlem için en yaygın sonuç, nihai çıktı olarak kullanılır. Tüm ağaçlara yeni bir gözlem verilir ve her sınıflandırma modeli için çoğunluk oyu alınır.

Ağaç oluşturulurken kullanılmayan durumlar için hata tahmini yapılır. Buna birOOB (Out-of-bag) yüzde olarak belirtilen hata tahmini.

R paketi "randomForest" rastgele ormanlar oluşturmak için kullanılır.

R Paketini Kurun

Paketi yüklemek için R konsolunda aşağıdaki komutu kullanın. Ayrıca varsa bağımlı paketleri de kurmanız gerekir.

install.packages("randomForest)

"RandomForest" paketi şu işleve sahiptir: randomForest() rastgele ormanlar oluşturmak ve analiz etmek için kullanılır.

Sözdizimi

R'de rastgele bir orman oluşturmak için temel sözdizimi şudur:

randomForest(formula, data)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • formula yordayıcı ve yanıt değişkenlerini açıklayan bir formüldür.

  • data kullanılan veri kümesinin adıdır.

Giriş Verileri

Bir karar ağacı oluşturmak için ReadingSkills adlı dahili R veri setini kullanacağız. "Yaş", "ayakkabı boyu", "puan" değişkenlerini ve kişinin anadili olup olmadığını bildiğimizde, kişinin okuma becerilerinin puanını açıklar.

İşte örnek veriler.

# Load the party package. It will automatically load other
# required packages.
library(party)

# Print some records from data set readingSkills.
print(head(readingSkills))

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu ve grafiği üretir -

nativeSpeaker   age   shoeSize      score
1           yes     5   24.83189   32.29385
2           yes     6   25.95238   36.63105
3            no    11   30.42170   49.60593
4           yes     7   28.66450   40.28456
5           yes    11   31.88207   55.46085
6           yes    10   30.07843   52.83124
Loading required package: methods
Loading required package: grid
...............................
...............................

Misal

Kullanacağız randomForest() Karar ağacını oluşturmak ve grafiğini görmek için işlev.

# Load the party package. It will automatically load other
# required packages.
library(party)
library(randomForest)

# Create the forest.
output.forest <- randomForest(nativeSpeaker ~ age + shoeSize + score, 
           data = readingSkills)

# View the forest results.
print(output.forest) 

# Importance of each predictor.
print(importance(fit,type = 2))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Call:
 randomForest(formula = nativeSpeaker ~ age + shoeSize + score,     
                 data = readingSkills)
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 1

        OOB estimate of  error rate: 1%
Confusion matrix:
    no yes class.error
no  99   1        0.01
yes  1  99        0.01
         MeanDecreaseGini
age              13.95406
shoeSize         18.91006
score            56.73051

Sonuç

Yukarıda gösterilen rastgele ormandan, ayakkabı boyutunun ve puanın, bir kişinin anadili olup olmadığına karar veren önemli faktörler olduğu sonucuna varabiliriz. Ayrıca modelde sadece% 1 hata var, bu da% 99 doğrulukla tahmin edebileceğimiz anlamına geliyor.

Hayatta kalma analizi, belirli bir olayın meydana geleceği zamanı tahmin etmekle ilgilenir. Aynı zamanda arıza zamanı analizi veya ölüme kadar geçen süre analizi olarak da bilinir. Örneğin kanserli bir kişinin hayatta kalacağı gün sayısını tahmin etmek veya mekanik bir sistemin ne zaman başarısız olacağını tahmin etmek.

R paketi adlı survivalhayatta kalma analizi yapmak için kullanılır. Bu paket şu işlevi içerir:Surv()Girdi verilerini bir R formülü olarak alan ve analiz için seçilen değişkenler arasında bir hayatta kalma nesnesi oluşturan. Sonra işlevi kullanırızsurvfit() analiz için bir arsa oluşturmak için.

Kurulum paketi

install.packages("survival")

Sözdizimi

R'de hayatta kalma analizi oluşturmak için temel sözdizimi -

Surv(time,event)
survfit(formula)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • time olay meydana gelene kadar takip süresidir.

  • event beklenen olayın meydana gelme durumunu gösterir.

  • formula yordayıcı değişkenler arasındaki ilişkidir.

Misal

Yukarıda kurulu hayatta kalma paketlerinde bulunan "pbc" adlı veri setini dikkate alacağız. Karaciğerin birincil biliyer sirozundan (PBC) etkilenen kişilerle ilgili hayatta kalma veri noktalarını açıklar. Veri kümesinde bulunan birçok sütun arasında, öncelikle "zaman" ve "durum" alanlarıyla ilgileniyoruz. Zaman, hastanın kaydı ile hastanın karaciğer nakli yapılan ya da hastanın ölümü arasındaki olayın başlangıcı arasındaki günlerin sayısını temsil eder.

# Load the library.
library("survival")

# Print first few rows.
print(head(pbc))

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu ve grafiği üretir -

id time status trt      age sex ascites hepato spiders edema bili chol
1  1  400      2   1 58.76523   f       1      1       1   1.0 14.5  261
2  2 4500      0   1 56.44627   f       0      1       1   0.0  1.1  302
3  3 1012      2   1 70.07255   m       0      0       0   0.5  1.4  176
4  4 1925      2   1 54.74059   f       0      1       1   0.5  1.8  244
5  5 1504      1   2 38.10541   f       0      1       1   0.0  3.4  279
6  6 2503      2   2 66.25873   f       0      1       0   0.0  0.8  248
  albumin copper alk.phos    ast trig platelet protime stage
1    2.60    156   1718.0 137.95  172      190    12.2     4
2    4.14     54   7394.8 113.52   88      221    10.6     3
3    3.48    210    516.0  96.10   55      151    12.0     4
4    2.54     64   6121.8  60.63   92      183    10.3     4
5    3.53    143    671.0 113.15   72      136    10.9     3
6    3.98     50    944.0  93.00   63       NA    11.0     3

Yukarıdaki verilerden analizimiz için zaman ve durumu düşünüyoruz.

Surv () ve survfit () İşlevini Uygulama

Şimdi uygulamaya geçiyoruz Surv() Yukarıdaki veri setine işlev verin ve eğilimi gösterecek bir grafik oluşturun.

# Load the library.
library("survival")

# Create the survival object. 
survfit(Surv(pbc$time,pbc$status == 2)~1) # Give the chart file a name. png(file = "survival.png") # Plot the graph. plot(survfit(Surv(pbc$time,pbc$status == 2)~1))

# Save the file.
dev.off()

Yukarıdaki kodu çalıştırdığımızda, aşağıdaki sonucu ve grafiği üretir -

Call: survfit(formula = Surv(pbc$time, pbc$status == 2) ~ 1)

      n  events  median 0.95LCL 0.95UCL 
    418     161    3395    3090    3853

Yukarıdaki grafikteki eğilim, belirli sayıda günün sonunda hayatta kalma olasılığını tahmin etmemize yardımcı olur.

Chi-Square testiki kategorik değişkenin aralarında anlamlı bir korelasyon olup olmadığını belirlemek için istatistiksel bir yöntemdir. Her iki değişken de aynı popülasyondan olmalı ve - Evet / Hayır, Erkek / Kadın, Kırmızı / Yeşil gibi kategorik olmalıdır.

Örneğin, insanların dondurma satın alma alışkanlıklarına ilişkin gözlemlerle bir veri kümesi oluşturabilir ve bir kişinin cinsiyeti ile tercih ettiği dondurmanın aromasını ilişkilendirmeye çalışabiliriz. Bir korelasyon bulunursa, ziyaret eden kişilerin cinsiyetini bilerek uygun tat stoğu planlayabiliriz.

Sözdizimi

Ki-Kare testi yapmak için kullanılan işlev chisq.test().

R'de ki-kare testi oluşturmak için temel sözdizimi -

chisq.test(data)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • data gözlemdeki değişkenlerin sayım değerini içeren bir tablo şeklindeki verilerdir.

Misal

Cars93 verilerini 1993 yılında farklı otomobil modellerinin satışını temsil eden "MASS" kütüphanesine alacağız.

library("MASS")
print(str(Cars93))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

'data.frame':   93 obs. of  27 variables: 
 $ Manufacturer      : Factor w/ 32 levels "Acura","Audi",..: 1 1 2 2 3 4 4 4 4 5 ... 
 $ Model : Factor w/ 93 levels "100","190E","240",..: 49 56 9 1 6 24 54 74 73 35 ... $ Type              : Factor w/ 6 levels "Compact","Large",..: 4 3 1 3 3 3 2 2 3 2 ... 
 $ Min.Price : num 12.9 29.2 25.9 30.8 23.7 14.2 19.9 22.6 26.3 33 ... $ Price             : num  15.9 33.9 29.1 37.7 30 15.7 20.8 23.7 26.3 34.7 ... 
 $ Max.Price : num 18.8 38.7 32.3 44.6 36.2 17.3 21.7 24.9 26.3 36.3 ... $ MPG.city          : int  25 18 20 19 22 22 19 16 19 16 ... 
 $ MPG.highway : int 31 25 26 26 30 31 28 25 27 25 ... $ AirBags           : Factor w/ 3 levels "Driver & Passenger",..: 3 1 2 1 2 2 2 2 2 2 ... 
 $ DriveTrain : Factor w/ 3 levels "4WD","Front",..: 2 2 2 2 3 2 2 3 2 2 ... $ Cylinders         : Factor w/ 6 levels "3","4","5","6",..: 2 4 4 4 2 2 4 4 4 5 ... 
 $ EngineSize : num 1.8 3.2 2.8 2.8 3.5 2.2 3.8 5.7 3.8 4.9 ... $ Horsepower        : int  140 200 172 172 208 110 170 180 170 200 ... 
 $ RPM : int 6300 5500 5500 5500 5700 5200 4800 4000 4800 4100 ... $ Rev.per.mile      : int  2890 2335 2280 2535 2545 2565 1570 1320 1690 1510 ... 
 $ Man.trans.avail : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 1 1 1 1 1 ... $ Fuel.tank.capacity: num  13.2 18 16.9 21.1 21.1 16.4 18 23 18.8 18 ... 
 $ Passengers : int 5 5 5 6 4 6 6 6 5 6 ... $ Length            : int  177 195 180 193 186 189 200 216 198 206 ... 
 $ Wheelbase : int 102 115 102 106 109 105 111 116 108 114 ... $ Width             : int  68 71 67 70 69 69 74 78 73 73 ... 
 $ Turn.circle : int 37 38 37 37 39 41 42 45 41 43 ... $ Rear.seat.room    : num  26.5 30 28 31 27 28 30.5 30.5 26.5 35 ... 
 $ Luggage.room : int 11 15 14 17 13 16 17 21 14 18 ... $ Weight            : int  2705 3560 3375 3405 3640 2880 3470 4105 3495 3620 ... 
 $ Origin : Factor w/ 2 levels "USA","non-USA": 2 2 2 2 2 1 1 1 1 1 ... $ Make              : Factor w/ 93 levels "Acura Integra",..: 1 2 4 3 5 6 7 9 8 10 ...

Yukarıdaki sonuç, veri kümesinin kategorik değişkenler olarak kabul edilebilecek birçok faktör değişkenine sahip olduğunu göstermektedir. Modelimiz için "AirBags" ve "Type" değişkenlerini dikkate alacağız. Burada satılan araba türleri ile sahip olduğu Hava yastığı türleri arasındaki önemli bir ilişkiyi bulmayı hedefliyoruz. Korelasyon gözlemlenirse, hangi tür arabaların hangi hava yastıkları ile daha iyi satılabileceğini tahmin edebiliriz.

# Load the library.
library("MASS")

# Create a data frame from the main data set.
car.data <- data.frame(Cars93$AirBags, Cars93$Type)

# Create a table with the needed variables.
car.data = table(Cars93$AirBags, Cars93$Type) 
print(car.data)

# Perform the Chi-Square test.
print(chisq.test(car.data))

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu verir -

Compact Large Midsize Small Sporty Van
  Driver & Passenger       2     4       7     0      3   0
  Driver only              9     7      11     5      8   3
  None                     5     0       4    16      3   6

         Pearson's Chi-squared test

data:  car.data
X-squared = 33.001, df = 10, p-value = 0.0002723

Warning message:
In chisq.test(car.data) : Chi-squared approximation may be incorrect

Sonuç

Sonuç, bir dizi korelasyonunu gösteren 0,05'ten küçük p değerini gösterir.