cbind, rbind ve matrix fonksiyonları

Share on:

Vektörler kullanışlı olsa da çoğu zaman birden fazla değişken üzerinde işlem yapma ihtiyacı duyarız. Bunun için bu değişkenleri topluca tutacak veri yapılarına ihtiyaç duyarız. rbind, cbind fonksiyonları eşit uzunluktaki vektörleri birleştirmemizi sağlarken, matrix fonksiyonu dizi üertmemizi sağlar.

Aşağıdaki örnekte olduğu gibi boy, kilo ve yas değişkenlerini oluşturarak onlara yeni değerler atamış olalım:

boy <- c(1.80, 1.65, 1.85, 1.90, 1.70, 1.67)
kilo <- c(70, 75, 80, 95, 65, 63)
yas <- c(45, 37, 23, 54, 27, 44)
boy;kilo;yas
## [1] 1.80 1.65 1.85 1.90 1.70 1.67
## [1] 70 75 80 95 65 63
## [1] 45 37 23 54 27 44

Üç değişkeni c() fonksiyonu kullanarak tek bir değişkende birleştirebiliriz:

bky <- c(boy,kilo,yas)
bky
##  [1]  1.80  1.65  1.85  1.90  1.70  1.67 70.00 75.00 80.00 95.00 65.00 63.00
## [13] 45.00 37.00 23.00 54.00 27.00 44.00

bky, 18 değerden oluşan yeni bir değişken (bky’den daha akılda kalıcı bir isim bulabilirsiniz).

Köşeli parantez içerisinde yer alan değerler, R çıktısında yeni satırdaki ilk değerin sıra numarasını vermektedir.

Şimdi bu farklı değişkenlerin sıra numarasını tutmak üzere bir sn değişkeni oluşturalım. Boy 1, kilo 2 ve yas 3 ile temsil edilsin. Bunu sağlamanın birkaç yolu var. Birincisi c() fonksiyonu;

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

Daha pratik bir yöntem rep() fonksiyonunu kullanmak;

sn <- rep(c(1,2,3),each=6)
sn
##  [1] 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3

veya

sn<-rep(1:3,each=6)
sn
##  [1] 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3

şeklinde kısaltmak ta mümkün.

cbind()

c() fonksiyonuyla değişkenler aynı vektörde birleştirilirken, cbind() fonksiyonu değişkenleri sütun şeklinde birleştirir:

bky <- cbind(boy,kilo,yas)
bky
##       boy kilo yas
## [1,] 1.80   70  45
## [2,] 1.65   75  37
## [3,] 1.85   80  23
## [4,] 1.90   95  54
## [5,] 1.70   65  27
## [6,] 1.67   63  44

Bu formattayken belli bir veriye ulaşmak için koordinatlarını vermek yetecektir. Mesela üçüncü satır, ikinci sütundaki değeri bulmak için;

bky[3,2]
## kilo 
##   80

Belli bir sütundaki değerleri seçmek için satır kısmını boş bırakmak yeterli. Yalnız virgülü unutmamak önemli. Mesela sadece kilo değişkeni için;

bky[,3]
## [1] 45 37 23 54 27 44

Yahut dördüncü satırdaki değişkenler için;

bky[4,]
##  boy kilo  yas 
##  1.9 95.0 54.0

Bir sütunun belli satırlarını seçmek te mümkün. Mesela 2. sütunun 2,3,4 ve 5. sütunlarını bu şekilde seçebiliriz;

bky[2:5,2]
## [1] 75 80 95 65

Hatta seçim yaparken c() fonksiyonu da kullanılabilir;

bky[c(1,4,6),]
##       boy kilo yas
## [1,] 1.80   70  45
## [2,] 1.90   95  54
## [3,] 1.67   63  44

Satır ve sütun sayısını sorgularken dim() fonlsiyonu kullanılabilir;

dim(bky)
## [1] 6 3

Satır ve sütun sayılarını ayrı ayrı sorgulamak için nrow() ve ncol() fonksiyonları kullanılabilir;

nrow(bky)
## [1] 6
ncol(bky)
## [1] 3

rbind()

cbind(), değişkenleri sütun olarak birleştirirken rbind(), satır olarak birleştirmektedir;

bky <- rbind(boy,kilo,yas)
bky
##      [,1]  [,2]  [,3] [,4] [,5]  [,6]
## boy   1.8  1.65  1.85  1.9  1.7  1.67
## kilo 70.0 75.00 80.00 95.0 65.0 63.00
## yas  45.0 37.00 23.00 54.0 27.0 44.00

matrix()

Değişkenleri bu şekilde birleştirmek yerine matriks oluşturup doğrudan içerisine atmakta mümkün.

bkymat <- matrix(nrow=6,ncol=3)
bkymat
##      [,1] [,2] [,3]
## [1,]   NA   NA   NA
## [2,]   NA   NA   NA
## [3,]   NA   NA   NA
## [4,]   NA   NA   NA
## [5,]   NA   NA   NA
## [6,]   NA   NA   NA

Görüldüğü gibi boş bir matrix elde ettik. Şimdi satır veya sütunları doldurabiliriz. Bunu c() fonksiyonuyla uzun uzun yazarak yapabileceğimiz gibi önceden oluşturduğumuz değişkenleri atayarak ta gerçekleştirebiliriz.

bkymat[,1] <- boy
bkymat[,2] <- kilo
bkymat[,3] <- yas
bkymat
##      [,1] [,2] [,3]
## [1,] 1.80   70   45
## [2,] 1.65   75   37
## [3,] 1.85   80   23
## [4,] 1.90   95   54
## [5,] 1.70   65   27
## [6,] 1.67   63   44

colnames() fonksiyonuyla sütun adları atayabiliriz;

colnames(bkymat) <- c("Boy","Kilo","Yas")
bkymat
##       Boy Kilo Yas
## [1,] 1.80   70  45
## [2,] 1.65   75  37
## [3,] 1.85   80  23
## [4,] 1.90   95  54
## [5,] 1.70   65  27
## [6,] 1.67   63  44

Matriks oluşturma işlemi as.matrix() ve cbind() fonksiyonlarıyla daha kolay bir biçimde yapılabilir:

bkymat<- as.matrix(cbind(boy,kilo,yas))
bkymat
##       boy kilo yas
## [1,] 1.80   70  45
## [2,] 1.65   75  37
## [3,] 1.85   80  23
## [4,] 1.90   95  54
## [5,] 1.70   65  27
## [6,] 1.67   63  44

Bu durumda değişken isimleri sütun başlıkları olarak kullanılmaktadır. Matriksin herhangi bir elemanını yine matriks[satır,sütun] şeklinde sorgulayarak öğrenebiliriz veyahut başka işlemlerde kullanabiliriz.

Burada belki lüzumsuz veya detay gibi görünen bu fonksiyonların farklı işlemlerde çok kolaylaştırıcı olduğunu göreceksiniz.