bitki_ismi <- c("bitki1", "bitki2", "bitki3", "bitki4", "bitki5",
"bitki6", "bitki7","bitki8", "bitki9", "bitki10")
yaprak_uzunlugu <- c(2.3, 3.4, 4.5, 1.2, 3.4,
NA, 1.8, 6.3, 2.1, NA)
deney_kosullari <- factor(c("karanlik", "aydinlik", "aydinlik", "karanlik", "aydinlik",
"karanlik", "karanlik", "aydinlik", "karanlik", "karanlik"))
10 Veri Çerçeveleri
Bir önceki derste matrisleri inceledik. Matrisler, tek bir veri tipine sahip iki boyutlu yapılardı. Ancak vektörler bölümünde (Bölüm 8), farklı veri tiplerini kullanmıştık. Yani gerçek bir veri analizi senaryosunda aslında elimizde farklı tipte veriler bulunmaktaydı.
Veri çerçeveleri aslında bu farklı veri tiplerini bir arada toplayabilme kabiliyetine sahiptir.
Genel olarak veri çerçeveleri, farklı veri tiplerine sahip vektörlerden oluşmuştur. Kullandığımız vektörlerin uzunluklarının aynı olması gereklidir. Gelin şimdi Bölüm 8’de işlediğimiz Tablo 8.1 versini veri çerçevesine çevirelim.
Hatırlarsanız öncelikle vektörler tanımlamıştık.
Şimdi ise bu vektörleri bir veri çerçevesi içerisinde birleştirelim:
veri <- data.frame(bitki_ismi = c("bitki1", "bitki2",
"bitki3", "bitki4",
"bitki5", "bitki6",
"bitki7","bitki8",
"bitki9", "bitki10"),
yaprak_uzunlugu = c(2.3, 3.4, 4.5, 1.2, 3.4,
NA, 1.8, 6.3, 2.1, NA),
deney_kosullari = factor(c("karanlik", "aydinlik",
"aydinlik", "karanlik",
"aydinlik", "karanlik",
"karanlik", "aydinlik",
"karanlik", "karanlik"))
)
Şimdi gelin str
fonksiyonu ile oluştruduğumuz veri çerçevesini inceleyelim:
str(veri)
'data.frame': 10 obs. of 3 variables:
$ bitki_ismi : chr "bitki1" "bitki2" "bitki3" "bitki4" ...
$ yaprak_uzunlugu: num 2.3 3.4 4.5 1.2 3.4 NA 1.8 6.3 2.1 NA
$ deney_kosullari: Factor w/ 2 levels "aydinlik","karanlik": 2 1 1 2 1 2 2 1 2 2
Dikkat ederseniz her sütun artık farklı bir tipe sahip.
10.1 Veri Çerçevesi boyutları
Elimizdeki veri çerçevesinin boyutlarını aynı matrisler gibi öğrenebiliriz.
dim(veri)
[1] 10 3
Satır sayısı:
nrow(veri)
[1] 10
Sütun sayısı:
ncol(veri)
[1] 3
10.2 Sütun ve satır isimleri
Her veri çerçevesinin bir sütun ismi olması gerekir. Sütun isimlerini colnames
fonksiyonu ile öğrenebiliriz:
colnames(veri)
[1] "bitki_ismi" "yaprak_uzunlugu" "deney_kosullari"
Aynı şekilde, her veri çerçevesinde bir satır ismi de bulunmaktadır. Bunu da rownames
fonksiyonu ile öğrenebiliriz:
rownames(veri)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
İstersek satır ve sütun isimlerini değiştirebiliriz:
Satır ve sütun isimleri mutlaka tekil olmalıdır. Yani her satır ismi ve her sütun ismi tek olmalı. Yukarıdaki örnekte satır isimlerinde iki tane bitki8
yazma şansımız yoktur. Yoksa hata alırsınız.
Şimdi tekrar veri çerçevesini ekrana yazdıralım:
veri
isim uzunluk kosul
bitki1 bitki1 2.3 karanlik
bitki2 bitki2 3.4 aydinlik
bitki3 bitki3 4.5 aydinlik
bitki4 bitki4 1.2 karanlik
bitki5 bitki5 3.4 aydinlik
bitki6 bitki6 NA karanlik
bitki7 bitki7 1.8 karanlik
bitki8 bitki8 6.3 aydinlik
bitki9 bitki9 2.1 karanlik
bitki10 bitki10 NA karanlik
Elimizdeki veri çerçeveleri çok uzun olabilir, bu yüzden verinin hepsini ekrana yazdırmak istemeyebiliriz. head
komutu, bize veri çerçevesinin ilk bir kaç satırını ekrana yazdırma şansı verir:
head(veri)
isim uzunluk kosul
bitki1 bitki1 2.3 karanlik
bitki2 bitki2 3.4 aydinlik
bitki3 bitki3 4.5 aydinlik
bitki4 bitki4 1.2 karanlik
bitki5 bitki5 3.4 aydinlik
bitki6 bitki6 NA karanlik
10.3 Veri çerçevesi işlemleri
Bir veri çerçevesinde, aynı matris gibi hareket edebiliriz. Mesela ikinci satırın üçüncü sütunundaki veriyi elde edelim:
veri[2,3]
[1] aydinlik
Levels: aydinlik karanlik
Şimdi sadece ikinci sütunu elde edelim:
veri[,2]
[1] 2.3 3.4 4.5 1.2 3.4 NA 1.8 6.3 2.1 NA
Şimdi de üçünücü satırı elde edelim:
veri[3,]
isim uzunluk kosul
bitki3 bitki3 4.5 aydinlik
İstersek sadece sütun isimlerini de kullanabiliriz. Önce sütun isimlerine bakalım:
colnames(veri)
[1] "isim" "uzunluk" "kosul"
Sadece yaprak uzunluklarına bakalım:
veri$uzunluk
[1] 2.3 3.4 4.5 1.2 3.4 NA 1.8 6.3 2.1 NA
Eğer $
işaretini kullanırsak, doğrudan sütun isimleri ile çalışabiliriz. Bu bize bir vektör geri döndürdü.
Peki yaprak uzunlukları vektöründeki 5. elemanı elde etmek istersek:
veri$uzunluk[5]
[1] 3.4
Bunu şu şekilde de yapabiliriz:
veri[5,2]
[1] 3.4
Bu iki işlem de bize aynı sonucu verecektir. Dolayısıyla istediğimizi kullanabiliriz.