Direct naar de hoofdinhoud
Module 4 · Les 1 van 27/10 in de cursus~12 min
Modulelessen (1/2)

Gegevens filteren en selecteren

De Tidyverse is een verzameling R-pakketten die zijn ontworpen voor datawetenschap en die een gemeenschappelijke filosofie, grammatica en datastructuren delen. Het kernpakket voor gegevensmanipulatie in deze suite heet dplyr.

dplyr introduceert een reeks functies ("werkwoorden") die de manipulatie van dataframes zeer intuïtief maken.


De pijpleidingoperator (%>% of |>)

De Tidyverse-filosofie concentreert zich op het aan elkaar koppelen van activiteiten. De pipe-operator %>% (of de native pipe |> geïntroduceerd in R 4.1+) neemt het resultaat van één expressie en geeft dit door als het eerste argument aan de volgende functie. Dit vermijdt geneste functieaanroepen en voorkomt dat uw werkruimte vol raakt met tijdelijke variabelen.

R
# Without pipe:
filter(select(df, name, age), age > 20)

# With pipe:
df %>%
  select(name, age) %>%
  filter(age > 20)

dplyr-werkwoorden voor filteren en selecteren

De drie fundamentele werkwoorden voor het extraheren van gegevens uit een dataframe zijn:

1. select()

Selecteert specifieke kolommen uit een dataframe. U kunt de kolomnamen vermelden die u wilt behouden, of u kunt het voorvoegsel - gebruiken om kolommen uit te sluiten.

R
# Select the 'name' and 'salary' columns
select(df, name, salary)

# Remove the 'address' column
select(df, -address)

2. filter()

Filtert rijen op basis van een of meer logische voorwaarden.

R
# Filter rows where age is greater than 30
filter(df, age > 30)

# Filter using multiple conditions (logical AND)
filter(df, age > 30, department == "HR")

3. arrange()

Sorteert rijen op basis van de waarden van een of meer kolommen. De sorteervolgorde is standaard oplopend. Als u in aflopende volgorde wilt sorteren, plaatst u de kolomnaam tussen desc().

R
# Sort by age (ascending)
arrange(df, age)

# Sort by salary (descending)
arrange(df, desc(salary))

Probeer het zelf

Oefening 1: Kolommen selecteren

Oefening#r.m4.l1.e1
Pogingen: 0Laden…

Gegeven het dataframe df, selecteert u de kolommen naam en leeftijd met select() en slaat u het resultaat op in df_selected.

Editor laden…
Toon hint

VS: df_selected <- select(df, naam, leeftijd)

Oplossing beschikbaar na 3 pogingen

Oefening#r.m4.l1.e2
Pogingen: 0Laden…

Filter de rijen van het dataframe df waarbij de leeftijdskolom strikt groter is dan 18, en sla het resultaat op in df_adults.

Editor laden…
Toon hint

Gebruik de functie filter(df, leeftijd > 18) en wijs het resultaat toe aan df_adults.

Oplossing beschikbaar na 3 pogingen

Oefening#r.m4.l1.e3
Pogingen: 0Laden…

Gebruik de pijpoperator %>% om bewerkingen aan elkaar te koppelen: filter eerst df en houd alleen records bij met een leeftijd > 18, en selecteer vervolgens de naamkolom. Sla het resultaat op in res.

Editor laden…
Toon hint

Scrivi: res <- df %>% filter(leeftijd > 18) %>% select(naam)

Oplossing beschikbaar na 3 pogingen

Oefening#r.m4.l1.e4
Pogingen: 0Laden…

Sorteer de rijen van het dataframe df op basis van de salariskolom in aflopende volgorde met behulp van arrange() en desc(). Sla het resultaat op in df_sorted.

Editor laden…
Toon hint

Usa regelt(beschrijving(salaris)) de hele interne pijpleiding of krijgt direct leiding.

Oplossing beschikbaar na 3 pogingen

Oefening#r.m4.l1.e5
Pogingen: 0Laden…

Schrijf een volledige pijplijn op df: filter de records waarbij afdeling gelijk is aan 'IT', selecteer de kolommen naam en salaris, en sorteer het resultaat op salaris (oplopend). Sla het eindresultaat op in res.

Editor laden…
Toon hint

Gebruik de pijp %>% om filter(afdeling == 'IT'), selecteer(naam, salaris) en regel(salaris) te ketenen.

Oplossing beschikbaar na 3 pogingen