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.

  1. Acaba kumarbazımızın günlük kar zarar durumu nedir?
  2. Geçen haftada toplam kar zarar durumu nedir?
  3. 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.