Aan de slagGa gratis aan de slag

purrr en histogrammen

Nu ga je alles wat je geleerd hebt samenbrengen, beginnend met twee verschillende lijsten die je omzet naar een gefacetteerd histogram. Je werkt opnieuw met de Star Wars-gegevens uit de sw_films- en sw_people-gegevenssets om een vraag te beantwoorden:

  • Wat is de verdeling van de lengtes van personages in elk van de Star Wars-films?

Verschillende films spelen zich af op verschillende planeten, dus je kunt verwachten dat de verdelingen van lengtes per film variëren. Je eerste taak is om de twee gegevenssets om te zetten in data frames, omdat ggplot() een data frame als input vereist. Vervolgens voeg je ze samen en maak je de plot: een histogram met een aparte facet, of subplot, voor elke film.

Deze oefening maakt deel uit van de cursus

Basis van functioneel programmeren met purrr

Cursus bekijken

Oefeninstructies

  • Maak een data frame met de "title" van elke film en de "characters" uit elke film in de sw_films-gegevensset.
  • Maak een data frame met de elementen "height", "mass", "name" en "url" uit sw_people.
  • Voeg de twee data frames samen met de sleutels "characters" en "url".
  • Maak een ggplot()-histogram met x = height, gefacet per filmtitle.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Turn data into correct data frame format
film_by_character <- tibble(filmtitle = map____(___, ___)) %>%
    mutate(filmtitle, characters = map(___, ___)) %>%
    unnest(cols = c(characters))

# Pull out elements from sw_people
sw_characters <- map____(___, `[`, c(___, ___, ___, ___))

# Join the two new objects
character_data <- inner_join(___, ___, by = c(___ = ___)) %>%
    # Make sure the columns are numbers
    mutate(height = as.numeric(height), mass = as.numeric(mass))

# Plot the heights, faceted by film title
ggplot(character_data, aes(x = ___)) +
  geom_histogram(stat = "count") +
  facet_wrap(~ ___)
Code bewerken en uitvoeren