Bölüm2 Temel R
(hashtag) işareti koyarak başladığınız satırlar kodlamanız hakkında bilgi içerir. İşlemi yaptığınızda sonucun “Console” ekranında yollandığından emin olunuz.
#toplama için + işareti kullanılır
5+3
## [1] 8
# çarpma işlemi için * işareti kullanılır
5*3
## [1] 15
# bölme işlemi için / işareti kullanılır
5/3
## [1] 1.67
# Üs hesaplamak için ^ işareti kullanılır
5^3
## [1] 125
Istatistiğin en temel kavramlarından biri değişkenlerdir. R içerisinde kullanacağınız değişkenlere değerlerini/Özelliklerini atayıp, bu değişkenleri R nesneleri (objects) olarak daha sonra kullanabilirsiniz.
Bu işlem için “<-” işareti kullanılır.
Örneğin a adında bir değişkene 5 değerini atayalım. “a” değişkeninin bir sepette bulunan elma sayısı olarak düşünelim.
a <- 5
Environment penceresindede oluşan değişikliğe dikkat ediniz. Artık “a” değişkeni üzerinde işlem yapılmak için bir R nesnesi olarak (object) “environment” penceresine yerleşti.
“a” objesinin değerini öğrenebilmek için ismini yazıp kodu çalıştırmanız gerekir.
a
## [1] 5
Aynı yöntem ile bir “b” objesi yaratalım, ve “b” değişkeni (objesi) aynı sepette bulunan armut sayısı olsun ve değerini kontrol edelim.
b <- 3
b
## [1] 3
Sepetteki toplam meyve sayısını bulmak için objelerin isimlerini toplamamız yeterli olur. Ayrıca elde ettiğimiz sonucu da başka bir nesne olarak tanımlayabiliriz.
toplam_meyve <- a+b
toplam_meyve
## [1] 8
Yarattığımız bu R nesneleri ile başka incelemeler de yapabiliriz. Örneğin sepetteki elmaların toplama oranı nedir diye merak edersek:
a/toplam_meyve
## [1] 0.625
Objelerin isimlerini de aynı mantık ile değiştirebiliriz.
elma <- a
armut <- b
elma/toplam_meyve
## [1] 0.625
Yüzde şeklinde ifade edilmek istenirse…
(elma/toplam_meyve)*100
## [1] 62.5
Yukarıdaki örneklerde her iki R objesinin (değişkenin) türü aynı idi: Her ikisi de nümerik değer ile ifade ediliyordu. Bu yüzden de toplama çarpma bölme gibi işlemleri yapabildik. Ancak değişkenler her zaman nümerik değerler almayabilirler. Örneğin kategorik değişkenler veya sıralı değişkenler metinler ile ifade edilebilirler. Böylesi durumlarda yani değişkenlerin türlerinin farklı olduğu durumlarda, matematiksel işlemler yapılamaz.
Meyve sepetimize iki adet muz ekleyelim ama sayısını metin cinsinden yazalım
muz <- "iki"
Sepetteki tüm meyveleri toplayalım, ve konsolda çıkacak hata mesajına bakalım.
toplam_meyve <- elma+armut+muz
Error in elma + armut + muz : non-numeric argument to binary operator
R studio hata mesajlarını kırmızı renk ile gösterir. Buradaki mesaj da nümerik olmayan değişkenler ile matematiksel işlemin yapılamayacağı uyarısını görüyoruz.
R bize farklı veri türleri ile çalışma olanağı tanır. Bazı temel türler arasında
- ondalıklı sayılarında dahil olduğu nümerik değerler, Örn 4.7 (numerics),
- tam sayı şeklindeki doğal sayılar, örneğin 4 (integers),
- doğru (TRUE), yanlış (FALSE) adı altında mantıksal değerler, (TRUE FALSE),
- metinler (characters)
sayılabilir.
Adı num olan ve 42 değerini vereceğimiz numerik bir değişken(object) yaratalım
num <- 42
Adı met olan ve evren adı altında bir metin değişkeni(object) yaratalım
met <- "evren"
Adı man olan ve FALSE (yanlış) değerini alacak olan mantıksal bir değişken (object) yaratalım
man <- FALSE
Her seferinde “Environment” penceresinde oluşan değişiklikleri kontrol ediniz.
Daha Önce yaptığımız hatayı tekrarlamak istemiyorsak değişkenlerin türlerini işlem yapmadan önce kontrol etmek doğru olur. Bu kontrolü class() komutu ile yapabiliriz.
Örneğin num değişkenin türünü anlamak için
class(num)
## [1] "numeric"
Konsolu kontrol ettiğimizde bu değişkenin numeric bir değişken olduğunu görüyoruz. Diğer iki değişken için aynı işlem yapıldığında da sonuçları konsoldan görebiliriz.
class(met)
## [1] "character"
class(man)
## [1] "logical"
2.1 Vektörler
Vektörler R dünyasında “tek boyutlu veri dizisi” anlamına gelmektedir. R dünyasında vektörler sadece nümerik değil aynı zamanda, metin veya mantıksal verileri de içerebilirler ve verileri tek boyutlu olarak saklamak/kaydetmek için kullanılırlar.
R dilinde vektörler c()
ile fade edilen birleştir fonksiyonu ile yaratılırlar. c()
fonksiyonu kullanılırken vektör elemanları tek tek tanımlanır ve aralarına virgül işareti konur.
Örneğin 1 2 ve 3 değerlerinden oluşan “nv” adında nümerik bir vektör tanımlamak isteyip, bu vektörü çağıran aşağıdaki kodu inceleyin
nv <- c(1, 2, 3)
nv
## [1] 1 2 3
“mv” adında a, b ve c değerlerinden oluşan bir metin vektörü oluşturmak istediğimizde
mv <- c("a", "b", "c")
mv
## [1] "a" "b" "c"
“bv” adında TRUE, FALSE ve TRUE değerlerinden oluşan bir mantıksal vektör için ise
bv <- c(TRUE, FALSE, TRUE)
bv
## [1] TRUE FALSE TRUE
kodları yazılır.
Las Vegas’a giden bir kumarbazın hikayesi!
Vektörleri ve üzerinde yapılan işlemleri anlamak için kendimize ufak bir hikaye yazalım ve Las Vegas’a giden bir kumarbazın hikayesini kodlayalım.
Varsayalım ki umarbazımız geçen hafta poker masasından;
Pazartesi günü 140$ kar Salı günü 50$ zarar Çarşamba günü 20$ kar Perşembe günü 120$ zarar Cuma günü ise 240$ kar ile
ve rulet masasından ise
Pazartesi günü 24$ zarar Salı günü 50$ zarar Çarşamba günü 100$ kar Perşembe günü 350$ zarar Cuma günü ise 10$ kar
ile kalkmış olsun
Bu verileri analiz etmek için poker ve rulet vektörleri haline getirelim
poker <- c(140, -50, 20, -120, 240)
rulet <- c(-24, -50, 100, -350, 10)
poker
## [1] 140 -50 20 -120 240
rulet
## [1] -24 -50 100 -350 10
Kullanılan tüm verilerin mümkün olduğu kadar detaylı ve temiz olması gerekir. Yarattığımız bu vektörlerdeki değerlerin haftanın günlerine denk geldiğini biliyoruz. Bu bilgiyi de vektörümüze ekleyelim. Vektör elemanlarına isim vermek için names()
fonksiyonu kullanılır.
poker ve rulet vektörlerimiz için bu işlemi yapan kodu aşağıda bulabilirsiniz
names(poker) <- c("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma")
names(rulet) <- c("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma")
Aslında bu işlemi haftanın günlerini gösteren bir “gün” vektörü yaratarak da yapabilirdik. Bu aslında işimizi daha kolaylaştırır. Gun verktörünü oyunlara atamak için ise
gun <- c("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma")
names(poker) <- gun
names(rulet) <- gun
yazılması gerekir.
Artık kumarbazımızın durumunu inceleyebiliriz.
- Acaba kumarbazımızın günlük kar zarar durumu nedir?
- Geçen haftada toplam kar zarar durumu nedir?
- Pokerde mi, rulette mi daha çok kazandı?
R vektörlerin birbirlerine sıra ile denk gelen elemanlarını toplar. Bu kurala dikkat ederek toplama işlemini vektör isimlerini kullanarak yapabiliriz.
Birinci soruyu yanıtlayalım:
gunluk_durum <- poker + rulet
gunluk_durum
## Pazartesi Sali Çarsamba Persembe Cuma
## 116 -100 120 -470 250
Her iki oyun için gün bazlı görüntü yukarıdaki gibi raporlandı.
İkinci soruyu yanıtlamak için vektörün birimlerini kendi içinde toplamamız gerekiyor. Bu işlem için sum()
toplama fonksiyonunu kullanacağız. İlk başta poker ve rulet için durumu saptayalım
poker_toplam <- sum(poker)
rulet_toplam <- sum(rulet)
Daha sonra bu iki değeri haftalık durumu görmek için toplayalım
haftalik_toplam <- poker_toplam + rulet_toplam
haftalik_toplam
## [1] -84
Kumarbazımız o kadar da başarı lıdeğil anlaşılan….
Acaba hafta boyunca poker mi rulet mi daha karlı idi?
poker_toplam > rulet_toplam
## [1] TRUE
rulet_toplam > poker_toplam
## [1] FALSE
Yukarıdaki rapordan kumarbazımızın pokerde ruletten daha başarılı olduğu görülüyor.
Acaba haftanın başı mı sonu mu daha karlı idi? Bu sorunun cevabını bulmak için bir vektörün içerisindeki spesifik bir değeri bulup çıkarmamız lazım.
Bir vektörün herhangi bir elamanını seçebilmek için R köşeli parantezi []
kullanır: Seçim için vektör içinde istenilen elemanın sıra numarası köşeli parantez içine yazılır.
Çarşamba günü pokerde ne olduğunu bulmaya çalışalım. Çarşamba haftanın üçüncü günü olduğuna göre, poker için
poker_carsamba <- poker[3]
poker_carsamba
## Çarsamba
## 20
Kumarbazımız çarşamba günü pokerden 20$ kar ile kalkmış.
Bir vektör içinden birden fazla değeri de öğrenmek mümkündür. örneğin Salı, Çarşamba ve Perşembe günleri poker için ne olduğunu anlamak istersek:
poker_haftaortasi <- poker[c(2,3,4)]
poker_haftaortasi
## Sali Çarsamba Persembe
## -50 20 -120
Aynı kodu c(2,3,4)
şeklinde yazmak yerine c(2:4)
olarak da yazabiliriz. Rulet için deneyelim:
rulet_haftaortasi <- rulet[c(2:4)]
rulet_haftaortasi
## Sali Çarsamba Persembe
## -50 100 -350
Gün isimlerini poker ve rulet vektörlerine atadığımız için bu değerleri de seçim için kullanabiliriz.
poker_haftabasi <- poker[c("Pazartesi", "Salı")]
poker_haftabasi
## Pazartesi Sali
## 140 -50
Haftabaşı ortalamasını mean() fonksiyonu ile hesaplayabiliriz.Bu fonksiyonu diğer vektörler için de kullanabiliriz:
mean(poker_haftabasi)
## [1] 45
mean(poker_haftaortasi)
## [1] -50
Vektörler arası karşılaştırma yapabilmek için karşılaştırma operatörlerini(işaretlerini) kullanabiliriz. Bu operatörler özellikle veritabanlarında gerekli ayıklamaları yapmak için kullanılır. Aşağıdaki kodları siz de bilgisyarınızda çalıştırıp sonuçlarını inceleyin.
< küçük işareti > büyük işareti <= küçük eşit >= büyük eşit == eşit != eşit değil
5 > 3
3 >= 5
3 == 3
3 != 5
c(3, 3.5, 4) > 3
Kumarbazımız hangi günler kar etmiş?
kar <- gunluk_durum > 0
kar
## Pazartesi Sali Çarsamba Persembe Cuma
## TRUE FALSE TRUE FALSE TRUE
Ne kadar kar etmiş?
poker[kar]
## Pazartesi Çarsamba Cuma
## 140 20 240
2.2 Matrisler
Aynı türden olmak kaydı ile (nümerik, metin veya mantıksal) verilerin satırlar ve sütunlar halinde derlenmiş haline R dünyasında matris adı verilir. Vektörlerin aksine matrisler satır ve sütunlar şeklinde düzenlendiği için matrisler iki boyutlu olarak tanımlanır.
R içinde istenilen matrisi yaratmak için matrix()
fonksiyonu kullanılır. Örneğin 1 den 9 a kadar sayıları satırlara yerleştiren ve 3 satırdan oluşan bir matris oluşturmak istenildiğinde aşağıdaki kod kullanılır:
matrix(1:9, byrow = TRUE, nrow = 3)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
Futbol takımlarının seyirci sayılarını kullanarak bir matris yaratalım. Önce takımları ve seyirci sayılarını içsaha ve dışsaha olarak ayrı ayrı vektörler halinde tanımlayalım:
genclerbirligi <- c(4000, 1500)
hacettepe <- c(1000, 500)
ankaragucu <- c(500, 100)
Bu takımları bir vektör altında toplayalım
toplam <- c(genclerbirligi, hacettepe, ankaragucu)
toplam
## [1] 4000 1500 1000 500 500 100
Daha sonra her satırı bir takımı temsil eden bir matris yaratalım
ankara <- matrix(toplam, nrow = 3, byrow = TRUE)
ankara
## [,1] [,2]
## [1,] 4000 1500
## [2,] 1000 500
## [3,] 500 100
şimdi satırlara takımların isimlerini, sütunlara da iç ve dış saha isimlerini tanımlayalım. Önce isim vektörlerini hazırlayalım:
takım <- c("genclerbirligi", "hacettepe", "ankaragucu")
saha <- c("iç saha", "dış saha")
şimdi bu vektörleri satırlara sütunlara atayalım. Bunun için R içinde tanımlı rownames
ve colnames
fonksiyonlarını kullanacağız.
rownames(ankara) <- takım
colnames(ankara) <- saha
ankara
## iç saha dis saha
## genclerbirligi 4000 1500
## hacettepe 1000 500
## ankaragucu 500 100
Takımlarımız toplam olarak ne kadar seyirci çekmişler? Satırların toplamını R içinde rowSums
fonksiyonu ile hesaplayabiliriz ve bu toplamı “satir_toplam” vektöründe tanımlayabiliriz
satir_toplam <- rowSums(ankara)
satir_toplam
## genclerbirligi hacettepe ankaragucu
## 5500 1500 600
Hesapladığımız satır toplamını matrise sütun olarak eklemek için cbind()
fonksiyonunu kullanılır. Hesapladığımız toplamı “ankara1” isimli yeni matrise eklemek için
ankara1 <- cbind(ankara, satir_toplam)
ankara1
## iç saha dis saha satir_toplam
## genclerbirligi 4000 1500 5500
## hacettepe 1000 500 1500
## ankaragucu 500 100 600
Aynı işlemi sütunlar için yapalım. Bu işlem için de rbind()
fonksiyonunu kullanacağız.
sutun_toplam <- colSums(ankara1)
sutun_toplam
## iç saha dis saha satir_toplam
## 5500 2100 7600
matrisimizin son halini “ankara2” matrisinde tanımlamak istediğimizde
ankara2 <- rbind(ankara1, sutun_toplam)
ankara2
## iç saha dis saha satir_toplam
## genclerbirligi 4000 1500 5500
## hacettepe 1000 500 1500
## ankaragucu 500 100 600
## sutun_toplam 5500 2100 7600
matrislerde de vektörler gibi belli elemanların seçimi için []
kullanılır. matrisler iki boyutlu olduklarından satır ve sütunlardan hangi birimleri seçeceğimizi virgül ,
ile ayırmamız gerekir. []
içine yazacağımız ilk değer satırı, ikincisi ise sütunu ifade eder
Örneğin Gençlerbiliği’nin iç saha seyirci sayısını bu mariksten çekmek istediğimizde
ankara2[1,1]
## [1] 4000
yazmamız gerekir.
Tüm takımların iç sahaları için
ankara2[1:3, 1]
## genclerbirligi hacettepe ankaragucu
## 4000 1000 500
Gençlerbirliği ve Ankaragücü dış sahası için
ankara2[c(1,3), 2]
## genclerbirligi ankaragucu
## 1500 100
Sadece Hacettepe için
ankara2[2,]
## iç saha dis saha satir_toplam
## 1000 500 1500
matrisler üzerinde matematiksel işlemler yapılabilir. Her bir biletin 5 lira olduğunu varsayalım. Bu durumda seyirci sayısını 5 ile çarparsak klüplerin gelirlerini hesaplamış oluruz.
gelir <- ankara*5
gelir
## iç saha dis saha
## genclerbirligi 20000 7500
## hacettepe 5000 2500
## ankaragucu 2500 500
Takım bazlı gelir için
rowSums(gelir)
## genclerbirligi hacettepe ankaragucu
## 27500 7500 3000
2.3 Faktörler
R diline faktörler kategorik değişkenlerin işlendiği ve saklandığı veri tipi anlamına gelir. Bundan önceki analizlerimizde çoğunlukla sürekli değişkenleri, yani sayı cinsinden ifade edilen, değişkenleri kullandık. Değişken tiplerinin istatistiki testler için neden önemli olduğundan bahsetmiştik.
Kullanılacak olan istatistiki testler değişkenlerin türlerine göre farklılaşır. Bu yüzden de değişkenin hangi tür olduğunu bilmek istatistiki test için en önemli önkoşuldur. Sürekli değişkenler ile kategorik değişkenleri ayıran özellik, nümerik değişkenlerin sonsuz, kategorik değişkenlerin ise belli bir sayıda değer alma durumlarıdır
Kategorik değişkene belirgin bir örnek olarak cinsiyeti verebiliriz. Cinsiyet değişkeni -neredeyse tüm koşullarda- kadın veya erkek değerlerini alabileğinden tüm gözlemler bu iki değerden birine denk düşer. Sınırlı sayıda değer alabilen değişkenler R dilinde faktörler olarak adlandırılır.
Faktörler R dilinde factor()
fonksiyonu ile oluşturulurlar. Beş kişilik bir gözlem grubundaki cinsiyetleri gösteren vektörü yaratalım:
cinsiyet <- c("E", "K", "K", "E", "E")
cinsiyet
## [1] "E" "K" "K" "E" "E"
Bu vektörü bir faktör haline getirmek için:
cinsiyet <- factor(cinsiyet)
cinsiyet
## [1] E K K E E
## Levels: E K
R cinsiyet değişkenimizi faktör haline getirdikten sonra kategorilerini Levels
satırında bize aktardı.
Kategorik değişkenleri iki grup içinde inceleyebiliriz: nominal kategorik değişkenler ve ordinal kategorik değişkenler. Bu tipleri birbirinden ayıran özellik ordinal kategorik değişkenlerin sıralanabilir olması, yani bu değişkende bir büyüklük küçüklük ilişkisinin bulunması, nominal kategorik değişkenlerde ise böyle bir ilişkinin bulunmamasıdır. Tutulan futbol takımları, sevilen renkler, hayvan türleri vb. nominal kategorik değişken türüne örnek olabilir. Ordinal değişkenelere ise “düşük” “orta” ve “yüksek” olarak ölçülmüş sıcaklıklar örnek verilebilir, zira kategoriler arasında sıralama yapma olanağımız bulunmaktadır.
İki türe de örnek vektörleri yaratalım ve faktör haline getirelim. Futbol takımları için (nominal kategorik değişken)
futbol <- c("genclerbirligi", "hacettepe", "ankaragucu", "adanademirspor")
futbol_faktor <- factor(futbol)
futbol_faktor
## [1] genclerbirligi hacettepe ankaragucu adanademirspor
## Levels: adanademirspor ankaragucu genclerbirligi hacettepe
Sıcaklık için (ordinal kategorik değişken)
sicaklik <- c("dusuk", "orta", "yuksek")
sicaklik_faktor <- factor(sicaklik)
sicaklik_faktor
## [1] dusuk orta yuksek
## Levels: dusuk orta yuksek
Kimi zaman faktör degiskenlerinin kategori seviyelerini levels
değiştirmek gerekebilir. Örneğin dusuk orta yüksek olarak tanımlı sicaklik değişkeninin kategori isimlerini (R dilinde levels) soğuk ılık ve sıcak olarak değiştirmek istediğimizi düşünelim. Bu işlem için ilk başta bu seviyeleri levels()
fonksiyonu ile öğrenelim.
levels(sicaklik_faktor)
## [1] "dusuk" "orta" "yuksek"
Bu işlemi hangi seviyeye yeni değer neyi atayacağımızı anlamak için yapıyoruz. Öğrendiğimiz seviyelere göre yeni atamaları ise aşağıdaki kod ile yapabiliriz.
levels(sicaklik_faktor) <- c("soguk", "ilik", "sicak")
sicaklik_faktor
## [1] soguk ilik sicak
## Levels: soguk ilik sicak
Faktör değişkenlerini anlayabilmek ve değişkene ait seviyeleri öğrenebilmek için summary()
“özet” fonksiyonu kullanılır.
summary(cinsiyet)
## E K
## 3 2
Nominal kategorik değişkenlerde büyüklük küçüklük ilişkisi bulunmadığını söylemiştik. Ordinal değişkenler için büyüklük küçüklük ilişkisini tanımlamamız gerekir.
Beş arabanın hızlarını gözlemlediğimiz ve yavaş, normal ve hızlı seviyelerini içeren hız adında ordinal bir değişken vektörü yaratalım.
hiz <- c("normal", "yavas", "yavas", "normal", "hizli" )
hiz
## [1] "normal" "yavas" "yavas" "normal" "hizli"
Bu vektörü daha önceden gördüğümüz factor()
fonksiyonu ile sadece bir faktör değişken haline çevirirsek R seviyeler arasındaki büyüklük küçüklük ilişkisini anlayamaz. Bu yüzden factor() fonksiyonuna bu ilişkiyi de tanımlamamız gerekir.
hiz_faktor <- factor(hiz, ordered = TRUE, levels = c("yavas", "normal", "hizli"))
hiz_faktor
## [1] normal yavas yavas normal hizli
## Levels: yavas < normal < hizli
summary(hiz_faktor)
## yavas normal hizli
## 2 2 1
Sıralı faktörleri birbiri ile karşılaştırmak istediğimizde, örneğin birinci ve beşinci arabaları aşağıdaki kodu yazmamız gerekir
araba1 <- hiz_faktor[1]
araba2 <- hiz_faktor[5]
araba1 > araba2
## [1] FALSE
Bu durumda araba1’in araba2’den daha yavaş gittiğini anlıyoruz.
2.4 Veri tabanları ve Listeler
Veri tabanları (dataframes) R dilinde matris gibi iki boyutlu bir nesneye verilen isimdir. Ancak veritabanlarının matrislerden farkı, farklı sütunlarda farklı türlerden (nümerik, faktör, mantıksal) verileri kaydedebilmeleridir. Matris dersinden hatırlayacağınız gibi, incelediğimiz matrisler sadece nümerik değerleri (futbol seyirici sayısı) içeriyordu.
Sosyal bilimlerde yapılan saha çalışmalarında kullanılan anketlerin içerdiği bilgiler, R içinde dataframe ler dahilinde kaydedilir. Örneğin bir sütunda cinsiyet (nominal kategorik), diğer sütunda gelir (nümerik) ve bir diğerinde ise futbol maçına gitme sıklığı (ordinal) bilgileri R içinde dataframe ler içine işlenir.
şoğu zaman başka veritabanları kullanacak olsak da, R içerisinde kendi veritabanımızı yaratabiliriz. Güneş sistemindeki gezegenler ile ilgili bir veri tabanı yaratmak istediğimizi düşünelim. Bu işlem için data.frame()
fonksiyonunu kullanacağız.
Önce vektörleri tanımlayalım:
gezegen_ismi <- c("Merkür", "Venüs", "Dünya", "Mars", "Jupiter", "Saturn", "Uranus", "Neptun")
tipi <- c("Katı", "Katı", "Katı", "Katı", "Gaz", "Gaz", "Gaz", "Gaz")
capi <- c(0.382, 0.949, 1, 0.532, 11.209, 9.449, 4.007, 3.883)
rotasyon <- c(58.64, -243.02, 1, 1.03, 0.41, 0.43, -0.72, 0.67)
cember <- c(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE)
Bu vektörleri data.frame() fonksiyonu ile birleştirelim.
gezegenler_df <- data.frame(gezegen_ismi, tipi, capi, rotasyon, cember)
gezegenler_df
## gezegen_ismi tipi capi rotasyon cember
## 1 Merkür Kati 0.382 58.64 FALSE
## 2 Venüs Kati 0.949 -243.02 FALSE
## 3 Dünya Kati 1.000 1.00 FALSE
## 4 Mars Kati 0.532 1.03 FALSE
## 5 Jupiter Gaz 11.209 0.41 TRUE
## 6 Saturn Gaz 9.449 0.43 TRUE
## 7 Uranus Gaz 4.007 -0.72 TRUE
## 8 Neptun Gaz 3.883 0.67 TRUE
Değişkenlerin özelliklerine str()
fonksiyonu ile bakalım.
str(gezegenler_df)
## 'data.frame': 8 obs. of 5 variables:
## $ gezegen_ismi: Factor w/ 8 levels "Dünya","Jupiter",..: 4 8 1 3 2 6 7 5
## $ tipi : Factor w/ 2 levels "Gaz","Kati": 2 2 2 2 1 1 1 1
## $ capi : num 0.382 0.949 1 0.532 11.209 ...
## $ rotasyon : num 58.64 -243.02 1 1.03 0.41 ...
## $ cember : logi FALSE FALSE FALSE FALSE TRUE TRUE ...
Bir dataframe den istediğimiz değişkeni seçmek için $
işareti kullanılır. Örneğin gezegen tipini “tip”" adı altında başka bir vektör şeklinde tanımlamak için
tip <- gezegenler_df$tipi
tip
## [1] Kati Kati Kati Kati Gaz Gaz Gaz Gaz
## Levels: Gaz Kati
Vektörler ve matrislere benzer bir şekilde veri tabanlarından istediğimiz değerleri []
kullanarak çekiyoruz. Örneğin Merkür gezegeninin çapını merak ediyorsak
gezegenler_df[1,3]
## [1] 0.382
komutu ile öğrenebiliriz.
Veya Mars gezegenine ait tüm bilgileri merak ediyorsak
gezegenler_df[4,]
## gezegen_ismi tipi capi rotasyon cember
## 4 Mars Kati 0.532 1.03 FALSE
komutu ile öğrenebiliriz
Değişkenlerin isimlerini de aynı şekilde kullanabiliriz
gezegenler_df[1:3, "tipi"]
## [1] Kati Kati Kati
## Levels: Gaz Kati
Gezegenlerinin çaplarını başka bir işlemde kullanmak üzere bu veri tabanından çekmek istediğinizi düşünelim. Bu iş için öncelikle bir vektör yaratmamız ve R a bu vektörü tanımlamamız gerekir.
cap <- gezegenler_df$capi
cap
## [1] 0.382 0.949 1.000 0.532 11.209 9.449 4.007 3.883
Seçmimizi subset()
komutu ile yapıp, isteklerimizi detaylandırabiliriz
subset(gezegenler_df, subset = capi > 1)
## gezegen_ismi tipi capi rotasyon cember
## 5 Jupiter Gaz 11.21 0.41 TRUE
## 6 Saturn Gaz 9.45 0.43 TRUE
## 7 Uranus Gaz 4.01 -0.72 TRUE
## 8 Neptun Gaz 3.88 0.67 TRUE
Bir veri tabanındaki sıralama işlemleri order()
komutu ile yapılır. Bu fonksiyon bir değişkene uygulandığında o değişkene ait değerlerin sıralamasını verir. örneğin gezegenler veri tabanını çap değişkenini kullanarak sıralayalım ve “siralama” vektör olarak kaydedelim.
cap_siralama <- order(gezegenler_df$capi)
gezegenler_df[cap_siralama,]
## gezegen_ismi tipi capi rotasyon cember
## 1 Merkür Kati 0.382 58.64 FALSE
## 4 Mars Kati 0.532 1.03 FALSE
## 2 Venüs Kati 0.949 -243.02 FALSE
## 3 Dünya Kati 1.000 1.00 FALSE
## 8 Neptun Gaz 3.883 0.67 TRUE
## 7 Uranus Gaz 4.007 -0.72 TRUE
## 6 Saturn Gaz 9.449 0.43 TRUE
## 5 Jupiter Gaz 11.209 0.41 TRUE
Bir veritabanı hakkında temel bilgileri almak için head()
ve tail()
fonksiyonlarını kullanabiliriz. head() veritabanının ilk kısmını yani ilk gözlemleri bize aktarırken, tail() son gözlemleri getirir.
R Listeler altında birçok nesneyi beraber tutmamızı olanaklı kılar. Listeleri oluşturmak için list
komutu kullanılır ve diğer nesneler gibi oluşturulurlar. Örneğin “vektor” “matris” ve “veritabanı” nesnelerini bir “listem” adı altında bir liste halinde birleştirmek için “list” komutunu aşağıdaki gibi kullanırız:
listem <- list(vektor, matris, veritabanı)
Listenizdeki bileşkelere isim vermek mümkündür
listem <- list(genclerbirliği_vektoru= vektor,
ankaragucu_matrisi= matris)
böylece listenin bileşkelerini karıştırmadan hatırlamak mümkün olur.