Ana içeriğe atla

Tidyverse ile Başlarken: Öğretici

R ve tidyverse ile Titanic verilerini analiz etmeye başlayın: dplyr ve ggplot2 ile verinizi nasıl filtreleyeceğinizi, sıralayacağınızı, özetleyeceğinizi, dönüştüreceğinizi ve görselleştireceğinizi öğrenin!
Güncel 3 Eki 2026  · 8 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Bu öğretici, bir hafta önce yaptığımız bir Facebook Live etkinliğinin yazıya dökülmüş halidir. Konu “Tidyverse’e Giriş”ti ve bu öğretici, birlikte kodlama oturumunda ele aldığımız tüm içeriği adım adım size sunacak!

Oturumun ilk bölümünü burada izleyebilirsiniz:

Ve ikinci bölümü burada:

Not: Oturuma ait tüm kodları bu depoda bulabilirsiniz.

Çekirdek tidyverse, günlük veri analizlerinde kullanmanız muhtemel paketleri içerir; örneğin veri görselleştirme için ggplot2 ve veri düzenleme için dplyr. Bu öğreticide odak noktanız bu ikisi olacak.

Unutmayın ki bir paket, özünde veriyle bir şeyler yapmak için kullanılan araçlar bütünüdür. R’de paketler hakkında daha fazla bilgi edinmek isterseniz, bu öğreticiye göz atın.

Tidyverse hakkında daha fazlası için, DataCamp’te David Robinson’ın Introduction to Tidyverse kursuna ve Learn the Tidyverse kaynaklarına bakın.

action diagram

Başlarken

Öncelikle, henüz kurmadıysanız tidyverse’i kurmalısınız:

# Install the tidyverse
# install.packages("tidyverse")

Artık tidyverse’i kurduğunuza göre, verinizi yükleyip bazı gözlemlere bakalım.

Bu öğreticide, her gözlemin bir kişi olduğu ve her değişkenin Name, Age ve Survived (veya hayatta kalmadı) gibi bir özelliği temsil ettiği Titanic veri kümesini inceleyeceksiniz.

Verinizi şu şekilde yükleyin:

 # Import the Tidyverse
library(tidyverse)

# Import data
passengers <- read.csv("data/train.csv")

# Check out the first several observations of your dataframe
passengers

##   PassengerId Survived Pclass
## 1           1        0      3
## 2           2        1      1
## 3           3        1      3
## 4           4        1      1
## 5           5        0      3
## 6           6        0      3
##                                                  Name    Sex Age SibSp
## 1                             Braund, Mr. Owen Harris   male  22     1
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1
## 3                              Heikkinen, Miss. Laina female  26     0
## 4        Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1
## 5                            Allen, Mr. William Henry   male  35     0
## 6                                    Moran, Mr. James   male  NA     0
##   Parch           Ticket    Fare Cabin Embarked
## 1     0        A/5 21171  7.2500              S
## 2     0         PC 17599 71.2833   C85        C
## 3     0 STON/O2. 3101282  7.9250              S
## 4     0           113803 53.1000  C123        S
## 5     0           373450  8.0500              S
## 6     0           330877  8.4583              Q

Not: read.csv()’ye vereceğiniz yol, kurulumunuza bağlı olarak değişebilir. Aynı dosya yolunu korumak isterseniz, GitHub deposunda bu projenin klasör yapısına bakabilirsiniz; burada bulabilirsiniz.

Ayrıca, passengers ifadesini çalıştırdıktan sonra gördüğünüz tüm değişkenler hakkında daha fazla bilgi edinmek isterseniz, veri kümesi açıklamasına göz atabilirsiniz.

Verinize genel bir bakış atmak için summary() fonksiyonunu kullanabilirsiniz:

# Summarize titanic
summary(passengers)

##   PassengerId       Survived          Pclass     
##  Min.   :  1.0   Min.   :0.0000   Min.   :1.000  
##  1st Qu.:223.5   1st Qu.:0.0000   1st Qu.:2.000  
##  Median :446.0   Median :0.0000   Median :3.000  
##  Mean   :446.0   Mean   :0.3838   Mean   :2.309  
##  3rd Qu.:668.5   3rd Qu.:1.0000   3rd Qu.:3.000  
##  Max.   :891.0   Max.   :1.0000   Max.   :3.000  
##                                                  
##                                     Name         Sex           Age       
##  Abbing, Mr. Anthony                  :  1   female:314   Min.   : 0.42  
##  Abbott, Mr. Rossmore Edward          :  1   male  :577   1st Qu.:20.12  
##  Abbott, Mrs. Stanton (Rosa Hunt)     :  1                Median :28.00  
##  Abelson, Mr. Samuel                  :  1                Mean   :29.70  
##  Abelson, Mrs. Samuel (Hannah Wizosky):  1                3rd Qu.:38.00  
##  Adahl, Mr. Mauritz Nils Martin       :  1                Max.   :80.00  
##  (Other)                              :885                NA's   :177    
##      SibSp           Parch             Ticket         Fare       
##  Min.   :0.000   Min.   :0.0000   1601    :  7   Min.   :  0.00  
##  1st Qu.:0.000   1st Qu.:0.0000   347082  :  7   1st Qu.:  7.91  
##  Median :0.000   Median :0.0000   CA. 2343:  7   Median : 14.45  
##  Mean   :0.523   Mean   :0.3816   3101295 :  6   Mean   : 32.20  
##  3rd Qu.:1.000   3rd Qu.:0.0000   347088  :  6   3rd Qu.: 31.00  
##  Max.   :8.000   Max.   :6.0000   CA 2144 :  6   Max.   :512.33  
##                                   (Other) :852                   
##          Cabin     Embarked
##             :687    :  2   
##  B96 B98    :  4   C:168   
##  C23 C25 C27:  4   Q: 77   
##  G6         :  4   S:644   
##  C22 C26    :  3           
##  D          :  3           
##  (Other)    :186

Şimdi aynı şeyi tidyverse’in en kullanışlı araçlarından biri olan pipe %>% ile yapın:

# Summarize titanic using a pipe
passengers %>%
  summary()

##   PassengerId       Survived          Pclass     
##  Min.   :  1.0   Min.   :0.0000   Min.   :1.000  
##  1st Qu.:223.5   1st Qu.:0.0000   1st Qu.:2.000  
##  Median :446.0   Median :0.0000   Median :3.000  
##  Mean   :446.0   Mean   :0.3838   Mean   :2.309  
##  3rd Qu.:668.5   3rd Qu.:1.0000   3rd Qu.:3.000  
##  Max.   :891.0   Max.   :1.0000   Max.   :3.000  
##                                                  
##                                     Name         Sex           Age       
##  Abbing, Mr. Anthony                  :  1   female:314   Min.   : 0.42  
##  Abbott, Mr. Rossmore Edward          :  1   male  :577   1st Qu.:20.12  
##  Abbott, Mrs. Stanton (Rosa Hunt)     :  1                Median :28.00  
##  Abelson, Mr. Samuel                  :  1                Mean   :29.70  
##  Abelson, Mrs. Samuel (Hannah Wizosky):  1                3rd Qu.:38.00  
##  Adahl, Mr. Mauritz Nils Martin       :  1                Max.   :80.00  
##  (Other)                              :885                NA's   :177    
##      SibSp           Parch             Ticket         Fare       
##  Min.   :0.000   Min.   :0.0000   1601    :  7   Min.   :  0.00  
##  1st Qu.:0.000   1st Qu.:0.0000   347082  :  7   1st Qu.:  7.91  
##  Median :0.000   Median :0.0000   CA. 2343:  7   Median : 14.45  
##  Mean   :0.523   Mean   :0.3816   3101295 :  6   Mean   : 32.20  
##  3rd Qu.:1.000   3rd Qu.:0.0000   347088  :  6   3rd Qu.: 31.00  
##  Max.   :8.000   Max.   :6.0000   CA 2144 :  6   Max.   :512.33  
##                                   (Other) :852                   
##          Cabin     Embarked
##             :687    :  2   
##  B96 B98    :  4   C:168   
##  C23 C25 C27:  4   Q: 77   
##  G6         :  4   S:644   
##  C22 C26    :  3           
##  D          :  3           
##  (Other)    :186

İpucu: R’de pipe operatörünün kullanımına dair daha fazla bilgi için bu öğreticiye bakabilirsiniz.

Eksik değeri olan gözlemleri çıkardıktan sonra da aynısını yapın. Küçük bir ipucu: pipe’ları birleştirebilirsiniz!

# Summarize titanic after dropping na
passengers %>%
  drop_na() %>%
  summary()

##   PassengerId       Survived          Pclass     
##  Min.   :  1.0   Min.   :0.0000   Min.   :1.000  
##  1st Qu.:222.2   1st Qu.:0.0000   1st Qu.:1.000  
##  Median :445.0   Median :0.0000   Median :2.000  
##  Mean   :448.6   Mean   :0.4062   Mean   :2.237  
##  3rd Qu.:677.8   3rd Qu.:1.0000   3rd Qu.:3.000  
##  Max.   :891.0   Max.   :1.0000   Max.   :3.000  
##                                                  
##                                     Name         Sex           Age       
##  Abbing, Mr. Anthony                  :  1   female:261   Min.   : 0.42  
##  Abbott, Mr. Rossmore Edward          :  1   male  :453   1st Qu.:20.12  
##  Abbott, Mrs. Stanton (Rosa Hunt)     :  1                Median :28.00  
##  Abelson, Mr. Samuel                  :  1                Mean   :29.70  
##  Abelson, Mrs. Samuel (Hannah Wizosky):  1                3rd Qu.:38.00  
##  Adahl, Mr. Mauritz Nils Martin       :  1                Max.   :80.00  
##  (Other)                              :708                               
##      SibSp            Parch                 Ticket         Fare       
##  Min.   :0.0000   Min.   :0.0000   347082      :  7   Min.   :  0.00  
##  1st Qu.:0.0000   1st Qu.:0.0000   3101295     :  6   1st Qu.:  8.05  
##  Median :0.0000   Median :0.0000   347088      :  6   Median : 15.74  
##  Mean   :0.5126   Mean   :0.4314   CA 2144     :  6   Mean   : 34.69  
##  3rd Qu.:1.0000   3rd Qu.:1.0000   382652      :  5   3rd Qu.: 33.38  
##  Max.   :5.0000   Max.   :6.0000   S.O.C. 14879:  5   Max.   :512.33  
##                                    (Other)     :679                   
##          Cabin     Embarked
##             :529    :  2   
##  B96 B98    :  4   C:130   
##  C23 C25 C27:  4   Q: 28   
##  G6         :  4   S:554   
##  C22 C26    :  3           
##  D          :  3           
##  (Other)    :167

Yukarıda yazdığınız koddaki biçemsel tutarlılığı fark etmiş olabilirsiniz. Bunun nedeni bir stil rehberine uymanızdır. Veri biliminde ve genel olarak programlama/kodlamada, bir stil rehberi kullanmaya mümkün olduğunca erken alışmak önemlidir. Hadley Wickham’ın tidyverse stil rehberinde belirttiği gibi,

İyi kodlama stili doğru noktalama işaretleri gibidir: onsuz da idare edebilirsiniz amaokunurluğubirkattarttırır.

Bir sonraki bölümde, dplyr ile verinizi filtrelemek, sıralamak ve mevcut değişkenlerden yenilerini türeterek veri düzenleme işlemlerine girişeceksiniz.

Verinizi Düzenleyin

Şimdi verinizi keşfetme ve veri kümesi hakkında ilk içgörüleri edinme zamanı. dplyr’ın fiillerini, yani filter(), arrange() ve mutate()’i kullanacaksınız; isimleri neyi yapıyorlarsa tam olarak onu ifade eder.

Diyelim ki belirli bir gözlem kümesini seçmek istiyorsunuz; örneğin “Sex” değişkeni ‘female’ olanlar. dplyr, bunu sezgisel bir şekilde ve veri hakkında nasıl düşünüp konuşuyorsanız ona paralel bir dille yapmanıza olanak tanır.

filter fiili, koşulla eşleşen gözlemleri seçer. İşte nasıl çalıştığı:

# Filter to get all "male" rows
passengers %>%
  filter(Sex == "male")

##   PassengerId Survived Pclass                           Name  Sex Age
## 1           1        0      3        Braund, Mr. Owen Harris male  22
## 2           5        0      3       Allen, Mr. William Henry male  35
## 3           6        0      3               Moran, Mr. James male  NA
## 4           7        0      1        McCarthy, Mr. Timothy J male  54
## 5           8        0      3 Palsson, Master. Gosta Leonard male   2
## 6          13        0      3 Saundercock, Mr. William Henry male  20
##   SibSp Parch    Ticket    Fare Cabin Embarked
## 1     1     0 A/5 21171  7.2500              S
## 2     0     0    373450  8.0500              S
## 3     0     0    330877  8.4583              Q
## 4     0     0     17463 51.8625   E46        S
## 5     3     1    349909 21.0750              S
## 6     0     0 A/5. 2151  8.0500              S

Yukarıdaki kod parçasının sonuçlarına bakınca, RMS Titanic’in batışında birçok erkeğin hayatta kalamadığını görürsünüz. Bu ilginç ve bu konuya bu öğreticide ilerleyen kısımlarda daha sıkı bir biçimde bakacağız!

Not: dplyr kodunu bir cümle gibi okuyabilirsiniz: verinizi alın ve (%>%) cinsiyetin erkek olması koşuluna göre filtreleyin. Yukarıdaki kod parçasındaki kod, orijinal veri çerçevesini değiştirmez. filter(Sex = "male") yaygın bir hatadır (Hugo da aynısını yaptı!); harika bir tidyverse hata rehberi var.

# Filter to get all "female" rows
passengers %>%
  filter(Sex == "female")

##   PassengerId Survived Pclass
## 1           2        1      1
## 2           3        1      3
## 3           4        1      1
## 4           9        1      3
## 5          10        1      2
## 6          11        1      3
##                                                  Name    Sex Age SibSp
## 1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1
## 2                              Heikkinen, Miss. Laina female  26     0
## 3        Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1
## 4   Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female  27     0
## 5                 Nasser, Mrs. Nicholas (Adele Achem) female  14     1
## 6                     Sandstrom, Miss. Marguerite Rut female   4     1
##   Parch           Ticket    Fare Cabin Embarked
## 1     0         PC 17599 71.2833   C85        C
## 2     0 STON/O2. 3101282  7.9250              S
## 3     0           113803 53.1000  C123        S
## 4     2           347742 11.1333              S
## 5     0           237736 30.0708              C
## 6     1          PP 9549 16.7000    G6        S

Görünüşe göre kadınların Titanic faciasından sağ kurtulma olasılığı daha yüksekti; en azından anekdotsal olarak böyle görünüyor.

Veriyi keşfederken, ilginizi çekebilecek soruları elinizden geldiğince sormalı ve yanıtlamalısınız! Şu anda, olası eğilimleri fark edip edemeyeceğinizi görmek için gözlemlerinizi artan Fare’a göre arrange() ile sıralamak isteyebilirsiniz. Bunu arrange() fiiliyle yapabilirsiniz:

# Arrange by increasing Fare
passengers %>%
  arrange(Fare)

##   PassengerId Survived Pclass                            Name  Sex Age
## 1         180        0      3             Leonard, Mr. Lionel male  36
## 2         264        0      1           Harrison, Mr. William male  40
## 3         272        1      3    Tornquist, Mr. William Henry male  25
## 4         278        0      2     Parkes, Mr. Francis "Frank" male  NA
## 5         303        0      3 Johnson, Mr. William Cahoone Jr male  19
## 6         414        0      2  Cunningham, Mr. Alfred Fleming male  NA
##   SibSp Parch Ticket Fare Cabin Embarked
## 1     0     0   LINE    0              S
## 2     0     0 112059    0   B94        S
## 3     0     0   LINE    0              S
## 4     0     0 239853    0              S
## 5     0     0   LINE    0              S
## 6     0     0 239853    0              S

Daha az ödeyen birçok kişinin felaketten sağ çıkamadığını görüyoruz. Bunu sadece verinizi yeniden sıralayarak keşfettiniz!

Fare’a göre azalan şekilde de arrange edebilirsiniz:

# Arrange by decreasing Fare
passengers %>%
  arrange(desc(Fare))

##   PassengerId Survived Pclass                               Name    Sex
## 1         259        1      1                   Ward, Miss. Anna female
## 2         680        1      1 Cardeza, Mr. Thomas Drake Martinez   male
## 3         738        1      1             Lesurer, Mr. Gustave J   male
## 4          28        0      1     Fortune, Mr. Charles Alexander   male
## 5          89        1      1         Fortune, Miss. Mabel Helen female
## 6         342        1      1     Fortune, Miss. Alice Elizabeth female
##   Age SibSp Parch   Ticket     Fare       Cabin Embarked
## 1  35     0     0 PC 17755 512.3292                    C
## 2  36     0     1 PC 17755 512.3292 B51 B53 B55        C
## 3  35     0     0 PC 17755 512.3292        B101        C
## 4  19     3     2    19950 263.0000 C23 C25 C27        S
## 5  23     3     2    19950 263.0000 C23 C25 C27        S
## 6  24     3     2    19950 263.0000 C23 C25 C27        S

Gerçekten de üst uçta daha fazla kurtulan var!

Bazen yeni değişkenler oluşturmak isteyebilirsiniz. Parch değişkeninin ebeveyn ve çocuk sayısını, SibSp’in ise kardeş ve eş sayısını gösterdiğini biliyorsunuz. Bunları toplayarak yeni bir FamSize değişkeni elde edebilirsiniz. Bu, özellik mühendisliğidir ve makine öğreniminde çoğu zaman önemli bir yer tutar!

Yeni değişkeninizi oluşturmak için, orijinal değişkenleri mutate() ile yeni olana dönüştürürsünüz.

# Create new column FamSize (size of family)
passengers %>%
  mutate(FamSize = Parch + SibSp)

##   PassengerId Survived Pclass
## 1           1        0      3
## 2           2        1      1
## 3           3        1      3
## 4           4        1      1
## 5           5        0      3
## 6           6        0      3
##                                                  Name    Sex Age SibSp
## 1                             Braund, Mr. Owen Harris   male  22     1
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1
## 3                              Heikkinen, Miss. Laina female  26     0
## 4        Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1
## 5                            Allen, Mr. William Henry   male  35     0
## 6                                    Moran, Mr. James   male  NA     0
##   Parch           Ticket    Fare Cabin Embarked FamSize
## 1     0        A/5 21171  7.2500              S       1
## 2     0         PC 17599 71.2833   C85        C       1
## 3     0 STON/O2. 3101282  7.9250              S       0
## 4     0           113803 53.1000  C123        S       1
## 5     0           373450  8.0500              S       0
## 6     0           330877  8.4583              Q       0

Not: mutate(), yeni sütunlar oluşturmak için kullanılabildiği gibi, var olan sütunları da benzer bir şekilde değiştirmek için kullanılabilir; tıpkı biyolojik bir bağlamda mutasyonun yaptığı gibi. Tam birebir olmasa da, fiil seçimine bağlam kazandıran hoş bir benzetmedir.

Artık ek değişkeniniz olduğuna göre, “Daha büyük ailelerin hayatta kalma oranı daha düşük olabilir mi?” gibi başka sorular sorabilirsiniz.

Bu hipotezi test etmek için, yukarıda olduğu gibi Parch ve SibSp toplamı olarak FamSize değişkenini oluşturun ve ardından azalan FamSize’a göre sıralayın:

# Create new column FamSize (size of family)
# Arrange by decreasing FamSize
passengers %>%
  mutate(FamSize = Parch + SibSp) %>%
  arrange(desc(FamSize))

##   PassengerId Survived Pclass                         Name    Sex Age
## 1         160        0      3   Sage, Master. Thomas Henry   male  NA
## 2         181        0      3 Sage, Miss. Constance Gladys female  NA
## 3         202        0      3          Sage, Mr. Frederick   male  NA
## 4         325        0      3     Sage, Mr. George John Jr   male  NA
## 5         793        0      3      Sage, Miss. Stella Anna female  NA
## 6         847        0      3     Sage, Mr. Douglas Bullen   male  NA
##   SibSp Parch   Ticket  Fare Cabin Embarked FamSize
## 1     8     2 CA. 2343 69.55              S      10
## 2     8     2 CA. 2343 69.55              S      10
## 3     8     2 CA. 2343 69.55              S      10
## 4     8     2 CA. 2343 69.55              S      10
## 5     8     2 CA. 2343 69.55              S      10
## 6     8     2 CA. 2343 69.55              S      10

En büyük ailedeki herkes hayatta kalamamış! Bu anlamlı olabilir: Belki de büyük bir ailenin parçasıysanız, Titanic’ten zamanında ayrılamadınız.

Ancak, sıfır ve birler çoğu zaman çok şey anlatmadığı için, Survived değişkeninin değerlerini No ve Yes metinlerine dönüştürün (ve yeni bir veri çerçevesi oluşturun!):

# Turn numerical values of Survived column to "No" & "Yes" (new data frame)
passengers1 <- passengers %>%
  mutate(Survived = ifelse(Survived == 0, "No", "Yes"))
passengers1

##   PassengerId Survived Pclass
## 1           1       No      3
## 2           2      Yes      1
## 3           3      Yes      3
## 4           4      Yes      1
## 5           5       No      3
## 6           6       No      3
##                                                  Name    Sex Age SibSp
## 1                             Braund, Mr. Owen Harris   male  22     1
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1
## 3                              Heikkinen, Miss. Laina female  26     0
## 4        Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1
## 5                            Allen, Mr. William Henry   male  35     0
## 6                                    Moran, Mr. James   male  NA     0
##   Parch           Ticket    Fare Cabin Embarked
## 1     0        A/5 21171  7.2500              S
## 2     0         PC 17599 71.2833   C85        C
## 3     0 STON/O2. 3101282  7.9250              S
## 4     0           113803 53.1000  C123        S
## 5     0           373450  8.0500              S
## 6     0           330877  8.4583              Q

Verinizi Görselleştirme

Verinizi ggplot2 ile çizmek için üç şeyi belirtirsiniz:

  • Veriniz
  • Estetikleriniz (örneğin, x ekseninde ne var)
  • Katmanlarınız (örneğin, çubuk grafik, saçılım grafiği)

Önce, Titanic’e binen kadın ve erkek sayısını görmek için Sex değişkeninin bir çubuk grafiğini çizeceksiniz:

# Plot barplot of passenger Sex
ggplot(passengers, aes(x = Sex)) +
  geom_bar()

barplot

Yukarıdaki grafikten, RMS Titanic’te yaklaşık 600 erkek ve 300 kadın bulunduğunu anlayabilirsiniz.

Not: aes() fonksiyonu, grafiğin estetiklerini verideki değişkenlere eşlemenin bir yoludur. Daha fazlası için Chester Ismay & Albert Y. Kim’in Modern Dive kitabına bakın.

Şimdi biraz saçılım grafiği zamanı. Herhangi bir yolcunun Age değeri, ödediği Fare ile ilişkili mi?

# Scatter plot of Age vs Fare
ggplot(passengers, aes(x = Age, y = Fare)) +
  geom_point()

## Warning: Removed 177 rows containing missing values (geom_point).

scatter plot

Sadece bu grafikten bile pek çok içgörü elde ettiniz! Daha fazla ödeyenlerin önemli bir kısmının aynı zamanda belirgin şekilde daha yaşlı olduğunu görüyorsunuz. Yaşa göre ücrette bir artış olmuş olabilir... Ayrıca, grafiğin üst kısmındaki iki aykırı değeri de hemen fark ediyorsunuz; bunları daha fazla incelemek isteyebilirsiniz!

ggplot2 kodunuzu, tıpkı yukarıdaki dplyr kodunuz gibi bir cümle gibi okuyabilirsiniz: “Veri olarak titanic’i alıp, Age’i x eksenine ve Fare’i y eksenine eşliyorsunuz ve noktaları grafik katmanı olarak ekliyorsunuz.”

Önceki grafiği alıp her noktayı Sex’e göre renklendirelim; böylece Sex, Age ve Fare arasındaki ilişkileri görelim:

# Scatter plot of Age vs Fare colored by Sex
ggplot(passengers %>% drop_na(), aes(x = Age, y = Fare, color = Sex)) +
  geom_point()

scatter plot 2

Alta yakın kısımda, daha az ödeyenlerin çoğunun erkek olduğunu görüyorsunuz. Ayrıca, grafiğin üst tarafında, biraz daha yaşlı olan ve Titanic’e binmek için daha fazla ödeyen kadınlardan oluşan bir küme var.

Bir grafikte üç değişkeni (iki sayısal: Age ve Fare, bir kategorik: Sex) görselleştirmek oldukça güzel; peki olası eğilimleri görmek için Survived değişkenini de işin içine katmak isterseniz? Bunu, aynı anda birden çok grafik üretmenin bir yolu olan fasetleme (faceting) ile yapabilirsiniz:

# Scatter plot of Age vs Fare colored by Sex faceted by Survived
ggplot(passengers1, aes(x = Age, y = Fare, color = Sex)) +
  geom_point() +
  facet_grid(~Survived)

## Warning: Removed 177 rows containing missing values (geom_point).

scatter plot 3

Bir önceki grafikte yukarıda dikkat çektiğiniz kadınların çoğunun hayatta kaldığını, hayatta kalamayanların büyük kısmının ise 50 birimin altında ödeme yaptığını görüyorsunuz. İpucu: Para biriminin ne olduğunu kendiniz bulmayı deneyin!

Şimdi yolcu Sex çubuk grafiğini tekrar yapalım ve bu kez çubukları Survived’a göre dolduralım:

# Plot barplot of passenger Sex & fill according to Survival
ggplot(passengers1, aes(x = Sex, fill = Survived)) +
  geom_bar()

bar plot 2

Erkeklerin büyük çoğunluğunun hayatta kalamadığını, buna karşılık kadınların üçte ikisinden fazlasının hayatta kaldığını görüyorsunuz!

Verinizi Özetleme ve Gruplama

Ödenen ortalama ücreti bulmak için summarise() fiilini kullanın:

# Check out mean Fare
passengers %>%
  summarise(meanFare = mean(Fare))

##   meanFare
## 1 32.20421

Ödenen medyan ücreti bulmak için summarise() fiilini kullanın:

# Check out mean Fare
passengers %>%
  summarise(medianFare = median(Fare))

##   medianFare
## 1    14.4542

Erkekler arasında ödenen ortalama ücreti bulmak için filter() ve summarise() fiillerini birlikte kullanabilirsiniz:

# Check out mean Fare for men
passengers %>%
  filter(Sex == "male") %>%
  summarise(meanFare = mean(Fare))

##   meanFare
## 1 25.52389

Kadınlar arasında ödenen ortalama ücreti bulmak için filter() ve summarise() fiillerini kullanın:

# Check out mean Fare for women
passengers %>%
  filter(Sex == "female") %>%
  summarise(meanFare = mean(Fare))

##   meanFare
## 1 44.47982

Kadınlar arasında ödenen ortalama ücreti ve kaç kadının hayatta kaldığını bulmak için filter() ve summarise() fiillerini kullanın:

# Check out mean Fare & number of survivors for women
passengers %>%
  filter(Sex == "female") %>%
  summarise(meanFare = mean(Fare), numSurv = sum(Survived))

##   meanFare numSurv
## 1 44.47982     233

Cinsiyete göre ortalama ücreti ve hayatta kalan sayısını bulmak için group_by() ve summarise() fiillerini kullanın:

# Check out mean Fare & number of survivors grouped by Sex
passengers %>%
  group_by(Sex) %>%
  summarise(meanFare = mean(Fare), numSurv = sum(Survived))

## # A tibble: 2 x 3
##   Sex    meanFare numSurv
##   <fct>     <dbl>   <int>
## 1 female     44.5     233
## 2 male       25.5     109

Cinsiyete göre ortalama ücreti ve hayatta kalanların oranını bulmak için group_by() ve summarise() fiillerini kullanın:

# Check out mean Fare & proportion of survivors grouped by Sex
passengers %>%
  group_by(Sex) %>%
  summarise(meanFare = mean(Fare), numSurv = sum(Survived)/n())

## # A tibble: 2 x 3
##   Sex    meanFare numSurv
##   <fct>     <dbl>   <dbl>
## 1 female     44.5   0.742
## 2 male       25.5   0.189

Sonuç

Bu öğreticide, tidyverse ve tidy araçlarını kullanarak veri analizinin temellerinde sıfırdan bir seviyesine geldiniz. Verinizi filter() ile süzmesini, arrange() ve mutate() ile düzenlemesini, dplyr ve ggplot2 ile görselleştirip summarise() ile özetlemesini, tümünü veriye nasıl düşünüp konuşuyorsanız onu yansıtan bir dille kod yazarak öğrendiniz. Tebrikler. David Robinson’ın Introduction to Tidyverse kursunu alarak ve bu araçları ilginizi çeken diğer veri kümelerinde kullanarak daha fazlasını öğrenmenizi öneririm. Bu analizleri Twitter’da bizimle paylaşın: @DataCamp ve @hugobowne. Okuduğunuz için teşekkürler.

Konular
R
Veri Bilimi
Veri Görselleştirme
Veri Analizi

R hakkında daha fazla bilgi edinin

Kurs

Tidyverse’a Giriş

4 sa
397.1K
R'daki güçlü ve popüler bir veri bilimi araçları koleksiyonu olan tidyverse ile kendi verilerinizi keşfetme ve görselleştirme yolunda ilerlemeye başlayın.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör