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.
# 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.
# 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.
# 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().
# Sort by age (ascending)
arrange(df, age)
# Sort by salary (descending)
arrange(df, desc(salary))Probeer het zelf
Oefening 1: Kolommen selecteren
Gegeven het dataframe df, selecteert u de kolommen naam en leeftijd met select() en slaat u het resultaat op in df_selected.
Toon hint
VS: df_selected <- select(df, naam, leeftijd)
Oplossing beschikbaar na 3 pogingen
Filter de rijen van het dataframe df waarbij de leeftijdskolom strikt groter is dan 18, en sla het resultaat op in df_adults.
Toon hint
Gebruik de functie filter(df, leeftijd > 18) en wijs het resultaat toe aan df_adults.
Oplossing beschikbaar na 3 pogingen
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.
Toon hint
Scrivi: res <- df %>% filter(leeftijd > 18) %>% select(naam)
Oplossing beschikbaar na 3 pogingen
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.
Toon hint
Usa regelt(beschrijving(salaris)) de hele interne pijpleiding of krijgt direct leiding.
Oplossing beschikbaar na 3 pogingen
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.
Toon hint
Gebruik de pijp %>% om filter(afdeling == 'IT'), selecteer(naam, salaris) en regel(salaris) te ketenen.
Oplossing beschikbaar na 3 pogingen