cbind, rbind ve matrix fonksiyonları
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.