GGPLOT2 Paketi ile Veri Görselleştirme

1. Giriş: ggplot2 Nedir ve Neden Önemlidir?

  • ggplot2, R programlama dilinde en popüler veri görselleştirme kütüphanesidir.
  • “Grammar of Graphics” felsefesini uygular: Grafikler; veri (data), estetikler (aesthetics) ve geometrik nesneler (geoms) gibi yapı taşlarından katman katman (layer) inşa edilir.
  • Bize estetik ve katman esaslı modüler bir sistem sunar; aynı veri için farklı grafik türlerini, renk ve tema ayarlarını kolayca değiştirebilirsiniz.
  • Akademik araştırmalardan iş raporlarına kadar her yerde kullanılır.

1.1 Base R Plot vs. ggplot2

  • Base R plot(): Hızlı bir çizim için yararlı ama esnekliği sınırlı, bir defa çizdikten sonra düzenlemesi zor.
  • ggplot2: Grafikler üzerinde tekrar çalışabilir, farklı katmanlar ekleyebilir, temaları değiştirebilir, oldukça esnek ve güçlü bir sisteme sahiptir.

2. Kurulum ve İlk Adımlar

# ggplot2 genellikle tidyverse paketi içinde yer alır, direkt aşağıdaki komutla yükleyebilirsiniz:
install.packages("tidyverse")

# Yalnızca ggplot2 kurmak isterseniz:
install.packages("ggplot2")

# Kütüphaneyi etkinleştirme
library(ggplot2)

Veri İnceleme ve Temel Fonksiyonlar:

  • head(data), tail(data), str(data), summary(data): Veri hakkında hızlı bilgi edinmenizi sağlar.
  • ?dataset_adi veya help("dataset_adi"): Veri setinin dokümantasyonuna bakar.

3. ggplot2’nin Temel Mantığı: “Grammar of Graphics”

ggplot2’nin yapısı üç ana bileşeni baz alır:

  1. Veri (data): Hangi veri çerçevesini (data frame, tibble vb.) kullanacağımızı belirtiriz.
  2. Estetikler (aes): X ekseni, Y ekseni, renk, boyut, grup gibi hangi değişkenlerin görsel özelliklere karşılık geleceğini tanımlar.
  3. Geometrik Nesneler (geom): Hangi tür grafiği çizeceğimizi belirler (noktalar, çizgi, sütunlar vb.).

İlk basit şablon:

ggplot(data = veri_adi, aes(x = x_degiskeni, y = y_degiskeni)) +
  geom_fonksiyonu()

Örneğin:

ggplot(data = mpg, aes(x = displ, y = hwy)) +
  geom_point()
  • mpg veri setini kullanıyoruz.
  • displ (motor hacmi) x eksenine, hwy (otoyol yakıt tüketimi) y eksenine atadık.
  • geom_point() => Nokta grafiği (scatter plot) çiziyor.

4. Temel Grafik Türleri (Geoms) ve Örnekleri

4.1 Nokta Grafiği (Scatter Plot) – geom_point()

  • İki sürekli değişken arasındaki ilişkiyi görselleştirmek için kullanılır.

  • Örnek:

    ggplot(mpg, aes(x = displ, y = hwy)) +
      geom_point(color = "blue", alpha = 0.7) +
      labs(
        title = "Motor Hacmi ve Yakıt Tüketimi İlişkisi",
        x = "Motor Hacmi (litre)",
        y = "Otoyol Yakıt Tüketimi (mpg)"
      ) +
      theme_minimal()
    
  • alpha: Noktaların saydamlık derecesini ayarlar (0-1 arası).

4.2 Çizgi Grafiği (Line Chart) – geom_line()

  • Genellikle zaman serisi veya sıralı verilerde kullanılır.

  • Örnek: ggplot2 içindeki economics veri setinde zaman ekseni grafiği:

    ggplot(economics, aes(x = date, y = pce)) +
      geom_line(color = "red") +
      labs(title = "Zaman Serisi: PCE", x = "Tarih", y = "Kişisel Tüketim Harcamaları")
    

4.3 Bar Grafiği (Bar Chart) – geom_bar() / geom_col()

  • Kategorik değişkenlerin frekansı veya özet değerlerini gösterir.
  • geom_bar(): Varsayılan olarak frekans çizimi yapar (y eksenini otomatik hesaplar).
  • geom_col(): y eksenini kendimiz tanımlarız (ör. ortalama, toplam vb.).

4.3.1 Tek Değişkenli Bar Grafiği (Frekans)

ggplot(data = diamonds, aes(x = cut)) +
  geom_bar(fill = "lightblue") +
  labs(title = "Distribution of Diamond Cut", x = "Cut", y = "Count")

4.3.2 Özet Değerlerle Bar Grafiği

# Örneğin mpg'de her sınıfın otoyolda galon başına ortalama mil miktarını hesaplayalım

library(dplyr)

mpg_summary <- mpg %>%
  group_by(class) %>%
  summarise(avg_hwy = mean(hwy))

ggplot(mpg_summary, aes(x = class, y = avg_hwy)) +
  geom_col(fill = "orange") +
  labs(title = "Araç sınıfına göre galon başına ortalama mil miktarı",
       x = "Araç Sınıfı",
       y = "Ortalama Mil")

4.4 Histogram – geom_histogram()

  • Sürekli verinin dağılımını görmek için idealdir.
ggplot(diamonds, aes(x = carat)) +
  geom_histogram(binwidth = 0.1, fill = "purple", color = "white") +
  labs(title = "Distribution of Diamond Carats", x = "Carat", y = "Frequency")
  • binwidth: Sütun genişliğini ayarlar, dağılımın detay seviyesini etkiler.

4.5 Kutu Grafiği (Boxplot) – geom_boxplot()

  • Gruplar arasındaki dağılımları, medyanı, çeyrek değerleri ve uç değerleri (outliers) gösterir.
ggplot(diamonds, aes(x = cut, y = price)) +
  geom_boxplot(fill = "lightgreen") +
  labs(title = "Boxplot of Diamond Prices by Cut", x = "Cut", y = "Price (USD)")

4.6 Yoğunluk Grafiği (Density Plot) – geom_density()

  • Sürekli verinin histogram yerine pürüzsüzleştirilmiş bir dağılım eğrisi.
  • Kategorik değişkenle birlikte kullanırsanız farklı renkte eğrileri üst üste görebilirsiniz.
ggplot(diamonds, aes(x = carat, color = cut)) +
  geom_density() +
  labs(title = "Density Plot of Carat by Cut", x = "Carat", y = "Density")

5. Estetikler (aes) ve Katmanlar

5.1 Estetik Atamaları

  • aes(x, y, color, fill, shape, size, alpha, group, linetype) gibi parametreler alır.
  • aes(color = cut) derseniz, cut değişkenine göre her nokta farklı renkte çizilir.
ggplot(diamonds, aes(x = carat, y = price, color = cut)) +
  geom_point()

5.2 Katmanlar (Layer)

  • Bir grafikte birden fazla katman kullanılabilir.
  • Mesela önce noktalar (geom_point), üzerine de trend çizgisi (geom_smooth) ekleyebilirsiniz.
ggplot(mpg, aes(x = displ, y = hwy)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(title = "Motor Hacmi ve Yakıt Tüketimi: Trend Çizgisi")

6. Facet Kullanımı: Veriyi Alt Gruplara Ayırma

  • facet_wrap(~ degisken): Belirtilen kategorik değişkene göre çoklu grafikler oluşturur (tek boyutlu).
  • facet_grid(satir_deg ~ sutun_deg): Satır ve sütunda ayrı kategoriler.
ggplot(mpg, aes(x = displ, y = hwy)) +
  geom_point() +
  facet_wrap(~ class) +
  labs(title = "Facet Wrap ile Araç Sınıfına Göre Dağılım")

7. Temalar, Etiketler ve Özelleştirmeler

7.1 Temalar

ggplot2, çeşitli ön tanımlı temalarla gelir:

  • theme_gray(), theme_bw(), theme_minimal(), theme_light(), theme_classic()
  • Kendi temalarınızı tanımlayabilir veya tema ayarlarıyla (yazı tipi, boyut, arka plan rengi vb.) çok detaylı oynamalar yapabilirsiniz.
ggplot(mpg, aes(x = displ, y = hwy)) +
  geom_point(color = "blue") +
  theme_minimal() +
  labs(title = "Minimal Tema Örneği")

7.2 labs() – Başlıklar ve Eksende İsimlendirme

  • labs(title = "", subtitle = "", x = "", y = "", caption = "") gibi parametreler grafiği açıklayıcı hale getirir.

7.3 Renk Ölçekleri ve Özelleştirme

  • scale_color_brewer(palette = "Set1"), scale_fill_brewer(), scale_color_manual(), scale_fill_manual() vb.

  • Örnek:

    ggplot(diamonds, aes(x = carat, y = price, color = cut)) +
      geom_point() +
      scale_color_brewer(palette = "Set1") +
      labs(title = "Renk Paleti Örneği")
    

7.4 Ek Açıklamalar (Annotate)

  • Grafiğin içine özel metin veya şekiller ekleyerek önemli noktaları vurgulayabilirsiniz.
ggplot(economics, aes(x = date, y = pce)) +
  geom_line() +
  annotate("text", x = as.Date("2008-01-01"), y = 8000,
           label = "Kriz Dönemi", color = "red")

8. Kaynaklar ve Öğrenme Yolları


9. Özet ve Öğrenme Stratejisi

  • Temel Kavramları Öğrenin: aes, geom, theme gibi yapı taşlarını kavradıktan sonra basit grafikler oluşturun.
  • Farklı Veri Setleriyle Uygulayın: Başlangıçta ggplot2 içinde gelen mpg, diamonds, economics gibi veri setlerini kullanın.
  • Adım Adım İlerleyin: Önce temel geoms (histogram, scatter, barplot), sonra facet, tema, renk paletleri gibi konulara geçin.
  • Kendi Verinizi Kullanın: Öğrendiklerinizi gerçek projelerinizde ya da alanınızdan örnek veri setlerinde uygulayın.

Bu aşamalarla ilerlediğinizde, önce “Ne, Nasıl?” sorularına cevap bulacak, sonra “Neden?” sorusunu da anlamış olacaksınız. ggplot2 sadece bir grafik çizme aracı değil, aynı zamanda verinizin hikâyesini net ve güzel bir şekilde anlatabilmenizi sağlayan bir sistemdir.

Önemli Nokta: Grafiklerinizi oluştururken verinin amacını, hedef kitleyi ve iletmek istediğiniz mesajı göz önünde bulundurun. ggplot2, esnek ve güçlü bir araç olsa da başarılı bir veri görselleştirme, grafik kurallarına ve iyi bir hikaye anlatımına dayanır.

10. Ek Bilgiler

ggplot2 paketinde yer alan hazır veri setleri

ggplot2 paketinde yer alan ve doğrudan erişebileceğiniz birkaç dahili veri seti bulunmaktadır. Aşağıda bu veri setlerini ve temel içeriklerini özetledim. R ortamında library(ggplot2) komutunu çalıştırdıktan sonra data(package = "ggplot2") yazarak da bu listeyi görüntüleyebilir veya ?veri_adi ile ilgili yardım sayfasına ulaşabilirsiniz.

  • diamonds

    • İçerik: Yaklaşık 54 bin elmas kaydı. Karat, kesim (cut), renk (color), berraklık (clarity) vb. değişkenleri içerir.
    • Kullanım: Dağılım grafikleri, regresyon örnekleri, kategorik değişkenler için görselleştirme vb.
  • economics

    • İçerik: ABD ekonomisine ilişkin aylık makroekonomik göstergeler (1967-2015). pce (kişisel tüketim harcamaları), psavert (tasarruf oranı), uempmed (işsiz kalma süresi) vb. değişkenleri içerir.
    • Kullanım: Zaman serisi örnekleri, trend analizleri, ekonomik veri görselleştirmeleri.
  • economics_long

    • İçerik: economics veri setinin “long” formatlı hali. Tüm değişkenler tek bir “value” sütununda, değişken isimleri ise ayrı bir “variable” sütununda saklanır.
    • Kullanım: Uzun veri formatına (long/tidy format) dayalı görselleştirme, facet işlemleri.
  • faithfuld

    • İçerik: Old Faithful gayzerinin püskürme aralıkları ve sürelerine ait yoğunluk tahmin değerleri (Old Faithful Geyser Data’dan türetilmiş 2D yoğunluk verisi).
    • Kullanım: 2 boyutlu yoğunluk haritaları (heatmap, contour plot) vb.
  • luv_colours

    • İçerik: R’nın dahili renk paletindeki renklerin [L_u_v*][1] renk uzayındaki değerlerini içerir.
    • Kullanım: Renk uzayı analizleri, özel görselleştirme örnekleri.
  • midwest

    • İçerik: ABD’nin orta batı bölgelerine (Midwest) ilişkin nüfus, eğitim, gelir, ırksal dağılım vb. istatistikler.
    • Kullanım: Coğrafi/harita uygulamaları, demografik analizler, bar/scatterplot örnekleri.
  • mpg

    • İçerik: Farklı araç modellerinin yakıt tüketimi, motor hacmi, sınıfı (SUV, compact vb.) gibi verileri.
    • Kullanım: Örnek görselleştirmeler (facet, scatterplot), kategorik-sürekli değişken ilişkileri vb.
  • msleep

    • İçerik: Farklı memeli türlerinin uyku süreleri, vücut kütlesi, beslenme şekli vb. bilgileri içerir.
    • Kullanım: Biyolojik veriler üzerinden çeşitli istatistiksel grafikleri (kutu grafiği, barplot, scatter) denemek için.
  • presidential

    • İçerik: ABD başkanlarının görev dönemlerini gösteren, tarih (start/end) ve parti bilgileri içeren küçük bir veri seti.
    • Kullanım: Özel zaman ekseni grafikleri (timeline), anotasyon örnekleri vb.
  • seals

    • İçerik: İstatistiksel bir örnek olarak kullanılan yüzey (surface) verisi. Bazı uzamsal koordinatlar ve ölçümlere dair bilgiler içerir.
    • Kullanım: 2D yüzey (contour) çizimleri.
  • txhousing

    • İçerik: Teksas eyaletindeki konut satışları (remax) için aylık veri. Şehir, tarih, satış fiyatları (median), satış adedi vb. değişkenler içerir.
    • Kullanım: Zaman serisi, çizgi grafikleri, coğrafi/demografik analizler.

Uygulamalar


Uygulama 1: Scatter Plot ile Motor Hacmi ve Yakıt Tüketimi İlişkisini Görselleştirin
mpg veri setini kullanarak, motor hacmi (displ) ile otoyol yakıt tüketimi (hwy) arasındaki ilişkiyi gösteren bir scatter plot oluşturun.

  • Noktaların rengini mavi, saydamlığını (alpha) 0.7 olarak ayarlayın.
  • Grafik başlığı, x ve y eksen etiketlerini ekleyin.
  • Minimal bir tema uygulayın.
    İpuçları: ggplot(), geom_point(), labs(), theme_minimal()

Uygulama 2: Facet Wrap Kullanarak Araç Sınıflarına Göre Alt Grafikler Oluşturun
mpg veri seti üzerinden oluşturduğunuz scatter plot’a, class değişkenine göre facet wrap ekleyin.

  • Her alt grafikte farklı araç sınıflarının dağılımını gösterin.
  • Başlık ve eksen etiketlerini unutmayın.
    İpuçları: facet_wrap()

Uygulama 3: Histogram ile Elmasların Karat Dağılımını Görselleştirin
diamonds veri setindeki carat değişkeni için bir histogram oluşturun.

  • Bin genişliğini (binwidth) 0.1 olarak ayarlayın.
  • Sütunların dolgu rengini istediğiniz bir renk (örneğin mor veya purple) olarak belirleyin.
  • Grafik başlığı ve eksen etiketlerini ekleyin.
    İpuçları: geom_histogram()

Uygulama 4: Bar Grafiği ile Elmasların Kesim Frekansını Gösterin
diamonds veri seti kullanılarak, cut değişkeninin frekansını gösteren bir bar grafiği oluşturun.

  • Sütunların dolgu rengini (fill) açık mavi olarak ayarlayın.
  • Uygun başlık ve eksen etiketlerini ekleyin.
    İpuçları: geom_bar(), labs()

Uygulama 5: Zaman Serisi Çizgisi ile Ekonomik Veriyi Görselleştirin
economics veri setinde, date değişkenine karşılık pce (kişisel tüketim harcamaları) değerlerini gösteren bir çizgi grafiği oluşturun.

  • Çizgi rengini kırmızı olarak ayarlayın.
  • Grafik başlığı, x ve y eksen etiketlerini ekleyin.
    İpuçları: geom_line()

Uygulama 6: Boxplot ile Elmas Fiyatlarını Kesime Göre Karşılaştırın
diamonds veri setini kullanarak, farklı cut kategorilerine göre price dağılımını gösteren bir boxplot oluşturun.

  • Kutuları dolgu rengi olarak açık yeşil yapın.
  • Grafik başlığı ve eksen etiketlerini ekleyin.
    İpuçları: geom_boxplot()

Uygulama 7: Yoğunluk Grafiği ile Araç Yakıt Tüketimi Dağılımını İnceleyin
mpg veri seti üzerinde, hwy değişkeninin yoğunluk dağılımını çizen bir grafik oluşturun.

  • Farklı araç sınıflarını (class) farklı renklerle göstermek için estetik atamaları kullanın.
  • Grafik başlığı ve eksen etiketlerini ekleyin.
    İpuçları: geom_density(), aes(color = ...)

Uygulama 8: Trend Çizgisi ve Annotate ile Ekonomik Kriz Dönemini Vurgulayın
economics veri setini kullanarak, date eksenine karşılık pce değerlerini gösteren bir zaman serisi grafiği oluşturun.

  • Grafiğe, geom_smooth() ile bir trend çizgisi ekleyin (örneğin lineer model kullanın).
  • annotate() fonksiyonu ile, 2008-01-01 tarihinde “Kriz Dönemi” ifadesini grafiğe ekleyin.
  • Grafik başlığı, x ve y eksen etiketlerini ekleyin.
    İpuçları: geom_line(), geom_smooth(), annotate()

Bu sorular ggplot2’nin temel yapı taşlarını (veri, estetik, geometrik nesneler) ve katmanlı yapı prensibini pekiştirmenize yardımcı olacaktır. Her soruyu denedikten sonra grafiğinizi gözlemleyin ve gerekirse düzenlemeler yaparak farklı görselleştirme tekniklerini keşfedin.

Veri Analizi – Ders 1 – Giriş

Giriş

  • [[The Data Science Process]]
  • Veri analizinde kullanabileceğimiz programlar:
    • Python, R, RStudio, Stata, SAS, SPSS, MATLAB, Microsoft Excel, Microsoft Power BI, Tableau, Julia, Apache Hadoop, Apache Spark, EViews, GRETL (Gnu Regression, Econometrics and Time-series Library), GAUSS…
    • Programlama dillerinin popülerliği ![[TIOBE Index.jpeg]]

Temel Kavramlar, R, RStudio

1. R Çalışma Ortamı (Environment)

  • R ve RStudio farkı
  • Konsol (Console) kullanımı:
    • Komutların doğrudan yazılıp çalıştırıldığı kısım.
    • > işareti, komut satırını gösterir.
  • Script dosyası oluşturma:
    • Uzun veya tekrar kullanmak istediğiniz kodları .R uzantılı bir dosyada saklayabilirsiniz.
    • RStudio kullanıyorsanız sol üst bölmede script dosyalarını düzenleyebilir, Ctrl + Enter ile kodları çalıştırabilirsiniz.
  • Çalışma dizini (Working Directory):
    • getwd() fonksiyonu mevcut çalışma dizinini gösterir.
    • setwd("path") ile çalışma dizinini değiştirebilirsiniz.

2. Yorum Satırları ve Temel Kod Yazımı

  • Yorum satırı: R’da # işareti ile başlar. Komut satırına yazdığınız kodlar yerine getirilirken # sonrasındaki kısım dikkate alınmaz.
    # Bu bir yorum satırıdır, R tarafından çalıştırılmaz
    x <- 5  # Değişkene 5 değeri atama
    
  • Kod düzeni ve okunabilirlik:
    • Değişken isimlerini anlaşılır seçin: gelir, enflasyon_orani, vb.
    • Gerektiğinde kodu uzun satırlarda yazmak yerine uygun yerlerde bölün.

3 Değişken Atama

  • Atama Operatörleri:
    • “<-”, “->”, “=” şeklinde 3 farklı atama operatörü kullanabilirsiniz.
    • Tavsiye edilen <- operatörüdür (R topluluğunda yaygın kullanım).
    • x <- 10, 10 -> x veya x = 10 aynı işi yapar; ancak x <- 10 daha gelenekseldir.
x <- 10         # x isminde bir değişken oluşturur ve değeri 10 atar
y = 5           # y isminde bir değişken, değeri 5
3 -> z          # z isminde bir değişken, değeri 3
  • Değişken adlandırma kuralları:
    • Harfler, rakamlar, . ve _ karakterlerini kullanabilirsiniz.
    • Boşluk kullanılamaz.
    • Sayı ile başlanmaz.

4 Temel Aritmetik İşlemler

  • Toplama, çıkarma, çarpma, bölme:
a <- 10
b <- 3
a + b   # 13
a - b   # 7
a * b   # 30
a / b   # 3.3333...
  • Üs alma ve modülü işlemi:
a^b       # 10^3 = 1000
a %% b    # 10 mod 3 = 1
a %/% b   # 10 tam bölü 3 = 3 (tam sayı bölme)
  • Yerleşik matematik fonksiyonları (örnekler):
sqrt(16)   # 4
log(100)   # 4.60517 (logaritma, varsayılan doğal log)
exp(1)     # 2.71828...
sin(pi/2)  # 1

5 Örnek Uygulama

  • Öğrencilerden bir ürünün maliyet, satış fiyatı, satış adedi gibi değişkenleri tanımlamalarını isteyin.
  • Toplam satış gelirini, kârı vb. hesaplamalarını sağlayın.
maliyet <- 5
satis_fiyati <- 10
satis_adedi <- 200

gelir <- satis_fiyati * satis_adedi
kar <- (satis_fiyati - maliyet) * satis_adedi

gelir   # 2000
kar     # 1000

7. R Veri Türleri

R programlama dilinde başlıca 6 temel veri türü bulunmaktadır. Bu veri türleri ve açıklamaları şöyledir:

Numeric (Sayısal)

  • Tanım: Reel (gerçek) sayıları ifade eder. Hem tam sayılar hem de ondalıklı sayılar bu kategoriye girer. Varsayılan olarak R, sayıları double precision (çift hassasiyetli) olarak saklar.
  • Örnek: x <- 42 veya y <- 3.14
  • Kontrol: is.numeric(x)TRUE

Integer (Tam Sayı)

  • Tanım: Sadece tam sayıları içerir. Bir sayıyı tam sayı olarak tanımlamak için sonuna L eklenir.
  • Örnek: x <- 42L (Burada L tam sayı olduğunu belirtir.)
  • Kontrol: is.integer(x)TRUE

Character (Karakter)

  • Tanım: Metinsel verileri ifade eder. Tek veya çift tırnak içinde yazılır.
  • Örnek: name <- "Onur" veya text <- 'Merhaba Dünya'
  • Kontrol: is.character(name)TRUE

Logical (Mantıksal/Boolen)

  • Tanım: Sadece TRUE veya FALSE (veya T ve F olarak da kısaltılabilir) değerlerini alır.
  • Örnek: x <- TRUE veya y <- F
  • Kontrol: is.logical(x)TRUE

Complex (Karmaşık Sayı)

  • Tanım: Karmaşık sayıları ifade eder; i sanal birim olarak kullanılır.
  • Örnek: z <- 3 + 4i
  • Kontrol: is.complex(z)TRUE

Raw (Ham Veri)

  • Tanım: İkili (binary) veriyi saklamak için kullanılır. Genellikle düşük seviye işlemler için tercih edilir.
  • Örnek: x <- charToRaw("Merhaba")62 65 72 68 61 62 61
  • Kontrol: is.raw(x)TRUE

Özet Tablo

Veri Türü Örnek Açıklama
Numeric 3.14, 42 Ondalıklı ve tam sayılar (varsayılan double).
Integer 42L Sadece tam sayılar (L ile belirtilir).
Character "Onur", 'Merhaba' Metinsel veriler.
Logical TRUE, FALSE Mantıksal değerler.
Complex 3 + 4i Karmaşık sayılar.
Raw charToRaw("A") İkili formatta ham veri.

8. R Veri Yapıları

R’de farklı veri türleri olduğu gibi farklı veri yapıları da bulunmaktadır. Her birinin kullanım alanı ve özelliği farklıdır. En yaygın kullanılanlar şunlardır:

Vektörler (Vectors)

  • Tanım: R’deki en temel veri yapısıdır. Aynı türden (numeric, character, logical vb.) değerleri tek boyutlu biçimde saklar.

  • Oluşturma:

# c() fonksiyonu vektör oluşturmak için kullanılır. R dilinde `c()` fonksiyonu, **combine** (birleştir) kelimesinin kısaltmasıdır ve **aynı türdeki** verileri içeren **vektörler** oluşturmak için kullanılır. `c()` fonksiyonu, sayılar, karakterler, mantıksal değerler gibi veri türlerini bir araya getirerek tek bir vektör haline getirir.
sayi_vektor <- c(1, 2, 3, 4, 5)
karakter_vektor <- c("Ali", "Veli", "Ayşe")
mantiksal_vektor <- c(TRUE, FALSE, TRUE)
  • Vektöre Eleman Ekleme:
sayi_vektor <- c(sayi_vektor, 6)   # Mevcut vektöre 6 eklenir
  • Vektör Elemanlarına Erişim (İndeksleme):
sayi_vektor[1]       # 1. eleman
sayi_vektor[2:4]     # 2., 3., ve 4. elemanlar
sayi_vektor[c(1, 5)] # Birinci ve beşinci elemanları getirir.
sayi_vektor[-1]      # birinci indeks değeri hariç vektörü çağırır.
  • Yaygın Vektör İşlemleri:
length(sayi_vektor)   # vektörün uzunluğu
sum(sayi_vektor)      # elemanların toplamı
mean(sayi_vektor)     # ortalaması
sort(sayi_vektor, decreasing = TRUE)  # büyükten küçüğe sırala

Matrisler (Matrices)

  • Tanım: İki boyutlu, aynı veri tipine sahip elemanların tablo biçiminde saklandığı yapıdır.
  • Oluşturma:
matris_ornek <- matrix(1:9, nrow = 3, ncol = 3)
matris_ornek
#      [,1] [,2] [,3]
# [1,]    1    4    7
# [2,]    2    5    8
# [3,]    3    6    9
  • Satır/ Sütun isimlendirme:
rownames(matris_ornek) <- c("Satir1", "Satir2", "Satir3")
colnames(matris_ornek) <- c("Sutun1", "Sutun2", "Sutun3")
  • Elemanlara Erişim:
matris_ornek[1, 2]   # 1. satır, 2. sütun
matris_ornek[ , 3]   # 3. sütundaki tüm elemanlar
matris_ornek[2, ]    # 2. satırdaki tüm elemanlar
  • Temel İşlemler:
t(matris_ornek)                # Transpoz alma
matris_ornek %*% matris_ornek  # Matris çarpımı

Data Frame

  • Tanım: En sık kullanılan veri yapısıdır. Sütunlar farklı veri tiplerini barındırabilir. Genellikle tabloları temsil eder (Excel gibi).
  • Oluşturma:
df_ornek <- data.frame(
isim = c("Ahmet", "Mehmet", "Ayşe"), # 1. sütundaki değerler
yas = c(25, 30, 22), # 2. sütundaki değerler
maas = c(4000, 5000, 3500) # 3. sütundaki değerler
)
df_ornek
  • Elemanlara Erişim:
df_ornek$isim       # isim sütununu çeker
df_ornek[1, 2]      # 1. satır, 2. sütun
df_ornek[ , "maas"] # maas sütununu çeker
  • Yeni Sütun Ekleme:
df_ornek$departman <- c("Finans", "Pazarlama", "IK")
  • Temel İşlemler:
str(df_ornek)      # Veri çerçevesinin yapısı hakkında bilgi
summary(df_ornek)  # Özet istatistikler
head(df_ornek, 2)  # İlk 2 satır
tail(df_ornek, 2)  # Son 2 satır

List (Listeler)

  • Tanım: Farklı veri tiplerini ve veri yapısı türlerini (vektör, matris, data.frame, başka listeler vb.) tek bir çatı altında tutabilen esnek yapılar.
  • Oluşturma:
liste_ornek <- list(
sayilar = c(1, 2, 3),
isimler = c("Ali", "Veli"),
bir_data_frame = df_ornek,
mantiksal = TRUE
)
  • Elemanlara Erişim:
    • Tek köşeli parantez [ ] kullanımı liste içinde alt liste döndürür.
    • Çift köşeli parantez [[ ]] kullanımı doğrudan elemanın kendisini döndürür.
liste_ornek[1]        # 1. eleman, alt liste olarak gelir
liste_ornek[[1]]      # 1. elemanın kendisi (c(1, 2, 3))
liste_ornek$isimler    # benzer şekilde "isimler" elemanını çeker

Tibble

  • Tanım: tidyverse paketinde bulunan tibble yapısı, data.frame’in gelişmiş ve kullanımı kolay bir versiyonudur.
  • Özellikler:
    • Daha okunabilir ekran çıktısı.
    • Çok uzun verisetlerinde sütun isimlendirmesi ve özet gösterimi daha kullanışlıdır.
  • Oluşturma:
library(tibble)

tibble_ornek <- tibble(
	isim = c("Ahmet", "Mehmet", "Ayşe"),
	yas = c(25, 30, 22),
	maas = c(4000, 5000, 3500)
)

tibble_ornek

<span style=“background:#fff88f”>Data Frame ile Tibble Arasındaki Farklar:</span>

R programında tibble ve data frame (veri çerçevesi) benzer yapılar olsa da, bazı temel farklar vardır. Tibble, tidyverse paketinin bir parçasıdır ve daha modern, kullanıcı dostu bir veri çerçevesi olarak geliştirilmiştir. Aşağıda tibble ve data frame arasındaki temel farklılıklar gösterilmiştir.

🔹 Temel Farklar

Özellik data.frame tibble
Büyük veri gösterimi Konsolda tamamını basmaya çalışır, uzun verilerde karışıklık olabilir Konsolda yalnızca ilk 10 satır ve ilk birkaç sütunu gösterir
Karakter vektörleri Varsayılan olarak faktör olarak tanımlar (stringsAsFactors = TRUE olabilir) Varsayılan olarak karakter olarak kalır
Alt kümeleme ([ işleci) Tek sütun seçildiğinde vektör döndürebilir Tek sütun seçildiğinde her zaman tibble döndürür
Performans ve Esneklik Daha eski bir yapıdadır, hata mesajları bazen belirsiz olabilir Kullanıcı dostu hata mesajları ve modern veri işleme desteği sunar

📝 Örneklerle Açıklama

📌1. Data Frame ile Çalışma

df <- data.frame(isim = c("Ali", "Ayşe", "Mehmet"),
                 yas = c(25, 30, 27),
                 maaş = c(5000, 6000, 5500))

print(df) 

Çıktı:

#    isim yas maaş
#1    Ali  25 5000
#2   Ayşe  30 6000
#3 Mehmet  27 5500

df$isim varsayılan olarak faktör (factor) olur, bu yüzden çoğu zaman as.character(df$isim) ile karaktere çevirmek gerekir.

📌 2. Tibble ile Çalışma

library(tibble)  
tb <- tibble(isim = c("Ali", "Ayşe", "Mehmet"),
             yas = c(25, 30, 27),
             maaş = c(5000, 6000, 5500))
print(tb) 

Çıktı:

# A tibble: 3 × 3
#  isim      yas  maaş
#  <chr>   <dbl> <dbl>
#1 Ali        25  5000
#2 Ayşe       30  6000
#3 Mehmet     27  5500

Gördüğün gibi:

  • Tibble, sütun veri türlerini (<chr>, <dbl>) gösterir.

  • isim sütunu karakter olarak kalır, data.frame gibi otomatik faktöre dönüştürmez.

📌 3. Tek Sütun Seçme Farkı

df$yas   # Vektör döndürür
tb$yas   # Tibble olarak kalır
df["yas"]  # Data frame döndürür
tb["yas"]  # Tibble olarak kalır

Özet:

  • df$yas doğrudan vektör döndürür.

  • tb$yas ise her zaman tibble formatında kalır.

📌 4. Konsolda Uzun Veri Gösterimi

büyük_df <- data.frame(sayi = 1:1000)
büyük_tb <- tibble(sayi = 1:1000)

#print(büyük_df)  # Konsolu kaplayabilir
print(büyük_tb)  # Sadece ilk 10 satırı gösterir

Tibble çok uzun veri çerçevelerinde konsolu kirletmez, sadece ilk birkaç satırı gösterir.

🎯 Sonuç

  • tibble, modern R kullanımı için daha uygundur, özellikle tidyverse ekosistemiyle uyumludur.
  • data.frame, R’nin eski sürümlerinden beri kullanılır ve klasik R fonksiyonları ile daha uyumludur.
  • Büyük veri setlerinde ve tidyverse kullanırken tibble önerilir.

Eğer tidyverse kullanıyorsan tibble ile çalışmak daha verimli olacaktır. Ancak eski R kodlarıyla çalışırken data.frame tercih edilebilir.

Factor (Kategorik Değişkenler)

  • Tanım: Faktörler kategorik değişkenleri (gruplamaları) temsil eder. Örneğin “Erkek/Kadın”, “Evet/Hayır”, “Düşük/Orta/Yüksek” gibi kategorik etiketleri barındırır.

  • Oluşturma:

    cinsiyet_vec <- c("Erkek", "Kadın", "Kadın", "Erkek")
    cinsiyet_factor <- factor(cinsiyet_vec)
    cinsiyet_factor
    # [1] Erkek Kadın Kadın Erkek
    # Levels: Erkek Kadın
    
  • Faktör Seviyeleri (Levels):

    • Faktörün hangi kategorilerden oluştuğunu gösterir.
    • İstenirse özel bir sıralama verilebilir: factor(cinsiyet_vec, levels = c("Kadın", "Erkek"))
  • Uygulama Alanları:

    • İstatistiksel modelleme (ANOVA, regresyon vb.) ve veri görselleştirme aşamalarında önemlidir.

9. Örnek Kapsamlı Uygulama

Aşağıdaki senaryoda farklı veri tiplerini içeren bir örnek uygulama yer almaktadır:

  1. Vektör Oluşturma ve Basit İşlemler:

    # Üç farklı ürüne ait fiyat bilgilerini bir vektörde tutalım
    urun_fiyat <- c(10.5, 8.75, 12.2)
    # Üç farklı ürünün satış miktarlarını bir vektörde tutalım
    urun_satis <- c(100, 150, 120)
    
    # Toplam satış gelirini hesaplayalım
    toplam_gelir <- urun_fiyat * urun_satis
    toplam_gelir  # vektör çarpımı sonucu, her ürünün ayrı geliri
    sum(toplam_gelir)  # Toplam gelir
    
  2. Data Frame Oluşturma:

    satis_df <- data.frame(
      urun_adi = c("Kalem", "Defter", "Silgi"),
      fiyat = urun_fiyat,
      adet = urun_satis
    )
    
  3. Yeni Sütun Ekleme (Toplam Gelir):

    satis_df$gelir <- satis_df$fiyat * satis_df$adet
    
  4. Factor Kullanımı:

    # Ürünlerin hangi kategoride olduğu (örneğin "Kırtasiye", "Kırtasiye", "Kırtasiye"):
    satis_df$kategori <- factor(c("Kırtasiye", "Kırtasiye", "Kırtasiye"))
    
  5. Tibble Dönüşümü:

    library(tibble)
    satis_tibble <- as_tibble(satis_df)
    satis_tibble
    
  6. Liste Oluşturma (Tüm Veriyi Saklama):

    satis_list <- list(
      veriler = satis_tibble,
      tarih = Sys.Date(),
      aciklama = "Kırtasiye ürünleri satış bilgisi"
    )
    

Bu kapsamlı örnek ile öğrenciler, R’de farklı veri yapılarının (vektör, data frame, factor, tibble, list) nasıl oluşturulduğunu, nasıl manipüle edildiğini, veri analizi sürecinde nasıl kullanılabileceğini pratik etmiş olur.


10. Ek İpuçları ve Öneriler

  1. Kodunuzu Yorumlayın ve Düzenli Yazın: – Kodun okunabilirliği hem kendi gelecekteki kullanımınız için hem de ekip çalışmalarında önemlidir.

  2. Str, Summary Gibi Fonksiyonları Bolca Kullanın:str(), summary() gibi fonksiyonlar, veri yapıları hakkında hızlıca fikir edinmenizi sağlar.

  3. RStudio Shortcuts:

    • Ctrl + Enter: Seçili satırı/kodu çalıştırır.
    • Ctrl + Shift + C: Yorum satırı ekler (ya da kaldırır).
    • Tab tuşu: Fonksiyon veya değişken adlarını otomatik tamamlar.
  4. Kaynak Dokümantasyon Okuma Alışkanlığı:

    • ?fonksiyon_adi veya help(fonksiyon_adi) ile fonksiyonların yardım sayfalarına bakın.
    • example(fonksiyon_adi) ile örnek kullanım görebilirsiniz.
  5. Uygulama Yapmaya Devam Edin:

    • Gerçek veri setleri indirin (örneğin TÜİK veya Dünya Bankası).
    • Bu veriler üzerinde vektör, data.frame, factor gibi yapıları kullanarak veri temizliği, temel istatistiksel analizler yapın.

11. Ders Sonrası Öneri ve Alıştırmalar

Alıştırma 1: – Kendi belirleyeceğiniz 5 ürün için birer fiyat vektörü oluşturun. – Her ürünün stok miktarı için ikinci bir vektör oluşturun. – Bu iki vektörü kullanarak bir data frame (veya tibble) oluşturun ve her ürün için “Toplam Değer = Fiyat*Stok sütunu ekleyin.

Alıştırma 2: – Size ve ailenize dair 5 farklı özelliği bir listede saklayın. Örneğin: isim, yas, hobiler, boy, kilo vb. – Bu liste elemanlarına tek ve çift köşeli parantezlerle erişim yaparak sonuçları gözlemleyin.

Alıştırma 3: – Bir factor değişkeni oluşturup seviyelerini (levels) özel bir sırada tanımlayın. – Bu factor değişkeni, örneğin c("Düşük", "Orta", "Yüksek", "Orta") gibi bir vektörden oluşsun. – Kategorik verileri bir sütunda tutan mini bir data frame veya tibble ile ilişkilendirerek özet tablo (table()) oluşturun.

Ödev 1

  1. RStudio Arayüzünü Keşfetme ve Temel Bileşenlerin İncelenmesi:
    • Bir script dosyası oluşturun.
    • RStudio açıldığında karşılaştığınız ana bölümleri (Console, Script Editor, Environment, History, Files, Plots, Packages, Help) tanımlayın. Yorum satırı kullanmayı unutmayın.
  2. Yorum Satırları ve Değişken Atama:
    • Atama operatörlerini kullanarak 5 farklı değişken tanımlayın.
  3. Vektör Oluşturma ve İndeksleme:
    • Sayısal, karakter ve mantıksal değerler içeren üç ayrı vektör oluşturun.
    • Bu vektörler üzerinde indeksleme yaparak belirli elemanlara nasıl erişileceğini gösteren örnekler yazın.
    • Vektörlerin uzunluğu, toplamı ve ortalamasını hesaplayın.
  4. Matris Oluşturma ve İşlemler:
    • 4×3 boyutlarında, 1’den 12’ye kadar sayılar içeren bir matris oluşturun.
    • Satır ve sütun isimlerini ekleyin.
    • Matrisin belirli bir satırını, sütununu ve belirli elemanları seçerek erişim örnekleri yazın.
  5. Data Frame (df) ile Basit Veri Analizi:
    • Ürün isimleri, fiyatları ve satış adetlerini içeren bir df oluşturun.
    • Bu df’e “Toplam Gelir” adında yeni bir sütun ekleyin (hesaplama: fiyat x adet).
    • df’in yapısını str() ve summary() fonksiyonlarıyla inceleyin.
  6. Factor Kullanımı:
    • Kategorik veriler içeren bir vektör oluşturun (örneğin: c("Düşük", "Yüksek")).
    • Bu vektörden bir factor oluşturun ve factor seviyelerini (levels) istediğiniz sıraya göre düzenleyin.
    • table() fonksiyonunu kullanarak kategorik dağılımı gözlemleyin.
  7. Liste Yapısı ile Çalışma:
    • Farklı veri türlerinden (vektör, data frame, tarih, karakter) elemanlar içeren bir liste oluşturun.
    • Liste içerisindeki elemanlara tek ve çift köşeli parantez kullanarak erişim örnekleri verin.
    • Oluşturduğunuz liste yapısını yorumlayın.
  8. Tibble ile Data Frame Karşılaştırması:
    • tibble paketini kullanarak, daha önce oluşturduğunuz data frame’i bir tibble’a dönüştürün. %%as_tibble()%%
    • Tibble ve klasik data frame arasındaki farkları gözlemleyin (örneğin, çıktı görünümü, sütun isimlendirme toleransı).
    • Sonuçlarınızı kısaca raporlayın.

Bu ödev maddelerini yerine getirirken, kodlarınızı yorum satırlarıyla açıklamayı, her adımın sonucunu gözlemleyip not almayı unutmayın. İyi çalışmalar!