Ga naar hoofdinhoud

Aan de slag met de Tidyverse: Tutorial

Begin met het analyseren van Titanic-data met R en de tidyverse: leer je data filteren, ordenen, samenvatten, muteren en visualiseren met dplyr en ggplot2!
Bijgewerkt 2 okt 2026  · 8 min lezen

Verken met AI

ChatGPTClaudePerplexity

Deze tutorial is een uitwerking van een Facebook Live-event dat we een week geleden deden. Het onderwerp was "Introductie tot de Tidyverse" en deze tutorial loodst je door alle content die we tijdens de code-along sessie hebben behandeld!

Je kunt het eerste deel van de sessie hier bekijken:

En het tweede deel hier:

Let op dat je alle code voor de sessie kunt vinden in deze repository.

De kern van de tidyverse bevat de pakketten die je waarschijnlijk dagelijks gebruikt bij data-analyses, zoals ggplot2 voor datavisualisatie en dplyr voor data wrangling. In deze tutorial focus je op deze twee.

Onthoud dat een pakket in essentie een set tools is om dingen met data te doen. Wil je meer weten over pakketten in R, bekijk dan deze tutorial.

Wil je meer over de Tidyverse, bekijk dan David Robinsons Introduction to Tidyverse-cursus op DataCamp en de Learn the Tidyverse-bronnen.

actiediagram

Aan de slag

Om te beginnen installeer je de tidyverse, als je dat nog niet gedaan hebt:

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

Nu je de tidyverse hebt geïnstalleerd, is het tijd om je data te laden en enkele observaties te bekijken.

In deze tutorial verken je de Titanic-dataset, waarbij elke observatie een persoon is en elke variabele een kenmerk zoals Name, Age en Survived (of niet).

Laad je data zo:

 # 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

Let op dat het pad dat je meegeeft aan read.csv() kan verschillen afhankelijk van je setup. Als je gewoon hetzelfde bestandspad wilt aanhouden, kun je altijd de mapstructuur van dit project bekijken in onze GitHub-repository, die je hier vindt.

Let ook op dat als je meer wilt weten over alle variabelen die je ziet als resultaat van het uitvoeren van passengers, je de datasetbeschrijving kunt raadplegen.

Om een overzicht van je data te krijgen, kun je de functie summary() gebruiken:

# 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

Doe nu hetzelfde met een pipe %>%, een van de handigste tools in de tidyverse:

# 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

Tip: als je meer wilt weten over het gebruik van de pipe-operator in R, bekijk dan deze tutorial.

Doe hetzelfde nadat je observaties met missende waarden hebt verwijderd. Hint: je kunt pipes aan elkaar schakelen!

# 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

Je hebt misschien een stilistische consistentie opgemerkt in de code die je hierboven hebt geschreven. Dat komt doordat je je aan een stijlgids houdt. In data science en programmeren/coderen in het algemeen is het belangrijk om zo snel mogelijk te wennen aan een stijlgids. Zoals Hadley Wickham het zegt in de tidyverse-stijlgids,

Goede codeerstijl is als correcte interpunctie: je kunt zonder, maarhetmaaktalleswelveelmakkelijkertelezen.

In de volgende sectie ga je aan de slag met data wrangling met dplyr om je data te filteren, te ordenen en nieuwe features te maken door oude te muteren.

Wrangle je data

Het is nu tijd om je data te verkennen en een eerste inzicht in de dataset te krijgen. Je gebruikt dplyr-werkwoorden zoals filter(), arrange() en mutate(), die precies doen wat ze zeggen.

Stel dat je een bepaalde set observaties wilt kiezen, bijvoorbeeld die waarvoor "Sex" 'female' was. dplyr laat ons dit intuïtief doen in een taal die weerspiegelt hoe je over data denkt en praat.

Het filter-werkwoord kiest alleen de observaties die aan de voorwaarde voldoen. Zie het in actie:

# 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

Als je naar de resultaten van het bovenstaande codeblok kijkt, zie je dat het lijkt alsof veel mannen de zinking van de RMS Titanic niet hebben overleefd. Dat is interessant, en je gaat dit later in deze tutorial grondiger verkennen!

Let op dat je dplyr-code kunt lezen als een zin: neem je data en (%>%) filter die vervolgens volgens de voorwaarde dat het geslacht mannelijk is. De code die je in het bovenstaande codeblok ziet, wijzigt het oorspronkelijke dataframe niet. filter(Sex = "male") is een veelgemaakte fout (Hugo maakte dezelfde fout!); er is een handige tidyverse-foutengids.

# 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

Vrouwen lijken meer kans te hebben gehad om de ramp met de Titanic te overleven, althans anekdotisch gezien.

Wanneer je data verkent, moet je vragen stellen en beantwoorden waar je in geïnteresseerd bent, naar beste kunnen! Misschien wil je nu je observaties arrange() op oplopende Fare om te zien of je trends kunt ontdekken. Je kunt hiervoor het werkwoord arrange() gebruiken:

# 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

Veel van de mensen die minder betaalden, hebben de ramp niet overleefd. Dat is iets interessants dat je net hebt ontdekt door je data opnieuw te ordenen!

Je kunt ook arrange op aflopende Fare:

# 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

Er zijn inderdaad meer overlevenden aan de bovenkant!

Soms wil je misschien nieuwe variabelen creëren. Je weet dat de variabele Parch het aantal ouders en kinderen is, terwijl SibSp het aantal broers/zussen en partners is. Je kunt deze optellen om een nieuwe variabele FamSize te krijgen. Dit is feature engineering en dat is vaak een groot onderdeel van machine learning!

Om je nieuwe variabele te maken, mutate() je de oorspronkelijke variabelen naar de nieuwe.

# 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

Let op dat je met mutate() nieuwe kolommen kunt maken maar ook bestaande kolommen kunt wijzigen, ongeveer zoals een mutatie vanuit biologisch perspectief. Niet exact, maar een fijne manier om context te geven voor de woordkeuze.

Nu je je extra variabele hebt, kun je andere vragen stellen, zoals "Is het mogelijk dat grotere families een lagere overlevingskans hebben?".

Om deze hypothese te testen, maak je een nieuwe variabele FamSize als de som van Parch en SibSp zoals hierboven, en orden je vervolgens op afnemende FamSize:

# 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

Iedereen in de grootste familie bovenaan heeft het niet overleefd! Dat kan veelzeggend zijn: misschien kon je, als je deel uitmaakte van een grote familie, niet op tijd van de Titanic afkomen.

Maar omdat nullen en enen vaak niet veel zeggen, muteer de waarden van de variabele Survived naar strings No en Yes (en maak een nieuw dataframe!):

# 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

Je data plotten

Om je data te plotten met ggplot2, specificeer je drie dingen:

  • Je data
  • Je aesthetics (bijvoorbeeld wat er op de x-as staat)
  • Je lagen (bijvoorbeeld staafdiagram, scatterplot)

Eerst plot je een staafdiagram van Sex om te zien hoeveel mannen en vrouwen aan boord van de Titanic waren geregistreerd:

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

staafdiagram

Uit de bovenstaande plot kun je opmaken dat er ongeveer 600 mannen en 300 vrouwen aan boord van de RMS Titanic waren.

Let op dat de functie aes() echt een manier is om de aesthetics van de plot te koppelen aan de variabelen in de data. Zie Modern Dive van Chester Ismay & Albert Y. Kim voor meer.

Nu is het tijd voor wat scatterplots. Is de Age van een passagier gecorreleerd met de Fare die hij/zij betaalde?

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

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

scatterplot

Je haalt veel inzichten uit deze ene plot! Je ziet dat veel van de mensen die meer betaalden, ook aanzienlijk ouder waren. Misschien was er een toename in tarief naar leeftijd... Daarnaast zie je meteen de twee uitschieters bovenaan de plot, die je verder zou kunnen onderzoeken!

Je kunt je ggplot2-code lezen als een zin, net als je dplyr-code hierboven: "Je neemt de data als titanic en je mappt Age op de x-as en Fare op de y-as, waarna je punten toevoegt als laag van de plot."

Laten we de vorige plot nemen en elk punt kleuren op basis van Sex, om eventuele verbanden tussen Sex, Age en Fare te zien:

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

scatterplot 2

Je ziet dat veel van de mensen onderaan, die minder betaalden, mannen waren. Je hebt ook een cluster vrouwen bovenaan de plot die iets ouder waren en ook meer betaalden om aan boord van de Titanic te komen.

Drie variabelen visualiseren (twee numeriek, Age en Fare, en één categorisch, Sex) in één plot is best gaaf, maar wat als je de variabele Survived eraan wilt toevoegen om te zien of er duidelijke trends zijn? Dat kan met faceting, een manier om meerdere plots tegelijk te maken:

# 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).

scatterplot 3

Plotseling zie je dat veel van de vrouwen die je hierboven in de vorige plot opmerkte, hebben overleefd, en dat de meesten die niet overleefden, minder dan 50 eenheden betaalden. Tip: probeer zelf de munteenheid te achterhalen!

Laten we nu je staafdiagram van passagiersSex opnieuw maken en deze keer je balken vullen op basis van Survived:

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

staafdiagram 2

Je ziet dat het overgrote deel van de mannen niet overleefde, terwijl meer dan twee derde van de vrouwen wel overleefde!

Je data samenvatten en groeperen

Gebruik het werkwoord summarise() om de gemiddelde prijs te vinden die is betaald:

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

##   meanFare
## 1 32.20421

Gebruik het werkwoord summarise() om de mediaan van de betaalde prijs te vinden:

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

##   medianFare
## 1    14.4542

Je kunt ook de werkwoorden filter() en summarise() gebruiken om de gemiddelde betaalde prijs onder mannen te vinden:

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

##   meanFare
## 1 25.52389

Gebruik de werkwoorden filter() en summarise() om de gemiddelde betaalde prijs onder vrouwen te vinden:

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

##   meanFare
## 1 44.47982

Gebruik de werkwoorden filter() en summarise() om de gemiddelde betaalde prijs onder vrouwen en hoeveel vrouwen overleefden te vinden:

# 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

Gebruik de werkwoorden group_by() en summarise() om de gemiddelde prijs en het aantal overlevenden te vinden als functie van geslacht:

# 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

Gebruik de werkwoorden group_by() en summarise() om de gemiddelde prijs en de proportie overlevenden te vinden als functie van geslacht:

# 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

Conclusie

In deze tutorial ben je van nul naar één gegaan met de basis van data-analyse met de tidyverse en tidy-tools. Je hebt geleerd hoe je je data kunt filter(), arrange() en mutate(), hoe je deze kunt plotten en summarise() met dplyr en ggplot2, allemaal door code te schrijven die weerspiegelt hoe je over data denkt en praat. Gefeliciteerd. Ik raad je aan om meer te leren door David Robinsons Introduction to Tidyverse-cursus te volgen en door deze tools te gebruiken op andere datasets die je interesseren. Deel deze analyses met ons op Twitter @DataCamp en @hugobowne. Bedankt voor het lezen.

Onderwerpen
R
Data Science
Datavisualisatie
Data-analyse

Leer meer over R

Cursus

Introductie tot de Tidyverse

4 uur
398.5K
Begin met het verkennen en visualiseren van je eigen gegevens met de tidyverse, een krachtige en populaire verzameling datawetenschapstools binnen R.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken