R’da her şeyin en küçük birimine “veri tipi” denir. Tıpkı atomlar gibi, bunlar da verinin en saf halidir. En sık kullanacağımız üç temel atom şunlardır:
numeric
(Sayısal): Bildiğimiz
sayılar. Bunlar tam sayılar (5
, -10
) veya
ondalıklı sayılar (3.14
, 2.718
) olabilir. R,
matematiksel işlemler için bu tipi kullanır.
character
(Karakter): Metin
verileri, yani harfler, kelimeler ve cümleler. R’a bir şeyin metin
olduğunu söylemek için onu mutlaka tırnak işaretleri ("
veya '
) içine almalıyız. Örneğin, "Merhaba"
veya 'R Programlama'
.
logical
(Mantıksal): Sadece iki
değeri olan özel bir tiptir: TRUE
(Doğru) veya
FALSE
(Yanlış). Bu, koşullu ifadeler ve karşılaştırmalar
için hayati öneme sahiptir. Örneğin, “5, 3’ten büyük müdür?” sorusunun
cevabı R için TRUE
’dur.
Bir verinin tipini class()
fonksiyonu ile kontrol
edebiliriz. Gelin farklı örneklerle deneyelim:
# --- Örnek 1: Temel Değişkenler ---
sayi_1 <- 15.5
metin_1 <- "Veri Bilimi"
durum_1 <- TRUE
class(sayi_1)
## [1] "numeric"
class(metin_1)
## [1] "character"
class(durum_1)
## [1] "logical"
# --- Örnek 2: Matematiksel Bir İşlemin Sonucu ---
# İki sayıyı topladığımızda sonuç yine 'numeric' olacaktır.
islem_sonucu <- 100 + 25.7
islem_sonucu
## [1] 125.7
class(islem_sonucu)
## [1] "numeric"
# --- Örnek 3: Mantıksal Bir Karşılaştırma ---
# 5'in 5'e eşit olup olmadığını kontrol edelim (== operatörü ile)
karsilastirma <- 5 == 5
karsilastirma
## [1] TRUE
class(karsilastirma)
## [1] "logical"
Tek bir atom nadiren işimize yarar. Bizim, bu atomları bir araya getirip anlamlı moleküller, yani “veri yapıları” oluşturmaya ihtiyacımız var. Bu bölümde en sık kullanacağımız 5 temel veri yapısını tanıyacağız: Vektörler, Matrisler, Listeler, Veri Çerçeveleri (Data Frame) ve Faktörler.
R’daki en temel ve en önemli veri yapısı vektördür.
c()
(combine/birleştir) fonksiyonu ile.# --- Örnek 1: Sayısal Vektör (Aylık Satış Adetleri) ---
satis_adetleri <- c(150, 210, 180, 250, 300)
satis_adetleri
## [1] 150 210 180 250 300
# --- Örnek 2: Karakter Vektörü (Ankete Verilen Cevaplar) ---
cevaplar <- c("Evet", "Hayır", "Evet", "Kararsızım", "Evet")
cevaplar
## [1] "Evet" "Hayır" "Evet" "Kararsızım" "Evet"
# --- Örnek 3: Mantıksal Vektör (Ürünlerin Stok Durumu) ---
stok_durumu <- c(TRUE, FALSE, TRUE, TRUE, FALSE)
stok_durumu
## [1] TRUE FALSE TRUE TRUE FALSE
Matrisler, vektörlerin iki boyutlu halidir.
matrix()
fonksiyonu
ile.# Örnek 1: 2 ürünün 3 aylık satış verilerini tutan bir matris
# byrow=TRUE parametresi, R'a vektörü satır satır doldurmasını söyler.
satis_matrisi <- matrix(c(10, 12, 15, 20, 18, 22), nrow = 2, byrow = TRUE)
satis_matrisi
## [,1] [,2] [,3]
## [1,] 10 12 15
## [2,] 20 18 22
Peki ya farklı tipleri bir arada tutmak istersek? İşte o zaman sahneye listeler çıkar.
list()
fonksiyonu
ile.# Örnek 1: Bir ürünün farklı tiplerdeki özellikleri
urun_ozellikleri <- list(
isim = "Akıllı Telefon",
fiyat = 15000,
markalar = c("Marka A", "Marka B", "Marka C"),
garantisi_var_mi = TRUE
)
# Bir listenin yapısını görmek için str() (structure) fonksiyonu harikadır.
str(urun_ozellikleri)
## List of 4
## $ isim : chr "Akıllı Telefon"
## $ fiyat : num 15000
## $ markalar : chr [1:3] "Marka A" "Marka B" "Marka C"
## $ garantisi_var_mi: logi TRUE
Geldik en önemli yapıya! Veri analizi ve makine öğrenmesi projelerinin %99’unda verilerimizi bu yapıda tutarız.
data.frame()
fonksiyonu ile.# Örnek 1: Kitaplar hakkında bilgi içeren bir veri çerçevesi
kitap_df <- data.frame(
KitapAdi = c("Veri Madenciliği", "R ile Programlama", "Yapay Zeka"),
SayfaSayisi = c(350, 420, 510),
StoktaVar = c(TRUE, FALSE, TRUE)
)
kitap_df
str(kitap_df)
## 'data.frame': 3 obs. of 3 variables:
## $ KitapAdi : chr "Veri Madenciliği" "R ile Programlama" "Yapay Zeka"
## $ SayfaSayisi: num 350 420 510
## $ StoktaVar : logi TRUE FALSE TRUE
R’da kategorik verileri (örneğin “kadın/erkek”, “küçük/orta/büyük”
gibi) saklamak için factor
adında özel bir yapı vardır.
factor()
veya
sıralama önemliyse ordered()
fonksiyonları ile.# Örnek 1: Tişört bedenlerini faktöre dönüştürme
bedenler_vektor <- c("M", "L", "S", "L", "M", "XL")
bedenler_faktor <- factor(bedenler_vektor)
bedenler_faktor
## [1] M L S L M XL
## Levels: L M S XL
# Örnek 2: Eğitim seviyesi gibi sıralı bir kategorik değişken
egitim_seviyesi <- ordered(
c("Lise", "Üniversite", "Yüksek Lisans", "Üniversite"),
levels = c("Lise", "Üniversite", "Yüksek Lisans")
)
egitim_seviyesi
## [1] Lise Üniversite Yüksek Lisans Üniversite
## Levels: Lise < Üniversite < Yüksek Lisans
Tebrikler! Artık R’ın alfabesini (veri tipleri) ve bu harflerle ilk kelimeleri nasıl oluşturacağımızı (veri yapıları) öğrendik. Özellikle data frame, makine öğrenmesi yolculuğumuzda verilerimizi taşıyacağımız en önemli aracımız olacak.
Bir sonraki bölümde, bu data frame’leri nasıl manipüle edeceğimizi, yani verileri nasıl süzeceğimizi, sıralayacağımızı ve yeni sütunlar ekleyeceğimizi öğreneceğiz. Artık veri hazırlama sanatına ilk adımı atmaya hazırız!
Bu bölümdeki konuların sırası ve anlatım felsefesi oluşturulurken aşağıdaki değerli eserden ilham alınmıştır. Örnekler ve metinler tamamen özgün olsa da, bu kaynağın yol göstericiliği için atıfta bulunmak etik bir gerekliliktir.
Lafaye de Micheaux, P., Drouilhet, R., & Liquet, B. (2013). The R Software: Fundamentals of Programming and Statistical Analysis. Springer.
Şimdi öğrendiklerimizi pekiştirme zamanı!
1. Vektörler: Bir haftanın sıcaklık değerlerini
(numeric
), günlerini (character
) ve o gün
yağmur yağıp yağmadığını (logical
) tutan üç ayrı vektör
oluşturun.
2. Matrisler: 2 öğrencinin 3 farklı dersten
(Matematik, Fizik, Kimya) aldıkları notları içeren 2x3
boyutunda bir matris oluşturun.
3. Listeler: Bir sinema filmi için; adını
(character
), vizyon yılını (numeric
), başrol
oyuncularının isimlerini bir vektör içinde (character
vektörü) ve IMDb puanını (numeric
) içeren bir liste
oluşturun.
4. Veri Çerçeveleri (Data Frames): 3 farklı
çalışanın Ad, Departman, Maaş ve TamZamanliMi bilgilerini içeren bir
veri çerçevesi (data frame) oluşturun. Oluşturduktan sonra
str()
fonksiyonu ile yapısını kontrol edin.
5. Faktörler: Bir grup insanın en sevdiği mevsimi
tutan bir character
vektörü oluşturun
("İlkbahar", "Yaz", "Sonbahar", "Kış"
). Bu vektörü bir
faktöre dönüştürün ve seviyelerini (levels()
) kontrol
edin.
Aşağıda, alıştırmaların R kodlarını ve bu kodların çalıştırıldığında RStudio’da üreteceği çıktıları bulabilirsiniz.
# --- Çözüm 1: Vektörler ---
haftalik_sicaklik <- c(22.5, 24.0, 23.1, 21.8, 25.2, 26.0, 24.5)
haftanin_gunleri <- c("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar")
yagmur_durumu <- c(FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE)
# Oluşturduğumuz vektörleri kontrol edelim:
haftalik_sicaklik
## [1] 22.5 24.0 23.1 21.8 25.2 26.0 24.5
haftanin_gunleri
## [1] "Pazartesi" "Salı" "Çarşamba" "Perşembe" "Cuma" "Cumartesi"
## [7] "Pazar"
yagmur_durumu
## [1] FALSE FALSE TRUE TRUE FALSE FALSE FALSE
# --- Çözüm 2: Matrisler ---
ogrenci_notlari <- matrix(c(85, 90, 75, 95, 88, 92), nrow = 2, byrow = TRUE)
# Sütun ve satır isimleri eklemek iyi bir pratiktir:
colnames(ogrenci_notlari) <- c("Matematik", "Fizik", "Kimya")
rownames(ogrenci_notlari) <- c("Öğrenci A", "Öğrenci B")
# Matrisimizi kontrol edelim:
ogrenci_notlari
## Matematik Fizik Kimya
## Öğrenci A 85 90 75
## Öğrenci B 95 88 92
# --- Çözüm 3: Listeler ---
film_bilgisi <- list(
ad = "Geleceğe Dönüş",
vizyon_yili = 1985,
oyuncular = c("Michael J. Fox", "Christopher Lloyd"),
imdb_puani = 8.5
)
# Listemizin yapısını str() ile inceleyelim:
str(film_bilgisi)
## List of 4
## $ ad : chr "Geleceğe Dönüş"
## $ vizyon_yili: num 1985
## $ oyuncular : chr [1:2] "Michael J. Fox" "Christopher Lloyd"
## $ imdb_puani : num 8.5
# --- Çözüm 4: Veri Çerçeveleri ---
calisan_df <- data.frame(
Ad = c("Ayşe", "Mehmet", "Fatma"),
Departman = c("İK", "IT", "Pazarlama"),
Maas = c(15000, 22000, 18000),
TamZamanliMi = c(TRUE, TRUE, FALSE)
)
# Data frame'imizi hem görüntüleyelim hem de yapısını kontrol edelim:
calisan_df
str(calisan_df)
## 'data.frame': 3 obs. of 4 variables:
## $ Ad : chr "Ayşe" "Mehmet" "Fatma"
## $ Departman : chr "İK" "IT" "Pazarlama"
## $ Maas : num 15000 22000 18000
## $ TamZamanliMi: logi TRUE TRUE FALSE
# --- Çözüm 5: Faktörler ---
sevilen_mevsimler <- c("Yaz", "İlkbahar", "Yaz", "Sonbahar", "Kış", "İlkbahar")
mevsim_faktor <- factor(sevilen_mevsimler)
# Faktörümüzü ve seviyelerini kontrol edelim:
mevsim_faktor
## [1] Yaz İlkbahar Yaz Sonbahar Kış İlkbahar
## Levels: İlkbahar Kış Sonbahar Yaz
levels(mevsim_faktor)
## [1] "İlkbahar" "Kış" "Sonbahar" "Yaz"