CommencerCommencez gratuitement

purrr et histogrammes

Vous allez maintenant mobiliser tout ce que vous avez appris, à partir de deux listes différentes, pour créer un histogramme avec facettes. Vous allez de nouveau travailler avec les données Star Wars des jeux de données sw_films et sw_people pour répondre à une question :

  • Quelle est la distribution des tailles des personnages dans chacun des films Star Wars ?

Les films se déroulent sur des planètes différentes, vous pouvez donc vous attendre à des distributions de tailles différentes selon les personnages. Votre première tâche consiste à transformer les deux jeux de données en data frames, car ggplot() exige un data frame en entrée. Vous les joindrez ensuite, puis tracerez le résultat : un histogramme avec une facette, ou sous-graphe, différente pour chaque film.

Cet exercice fait partie du cours

<cours>Fondations de la programmation fonctionnelle avec purrr</cours>
Voir le cours

Instructions de l’exercice

  • Créez un data frame avec le "title" de chaque film et les "characters" de chaque film dans le jeu de données sw_films.
  • Créez un data frame avec les éléments "height", "mass", "name" et "url" de sw_people.
  • Joignez les deux data frames en utilisant les clés "characters" et "url".
  • Créez un histogramme ggplot() avec x = height, facetté par filmtitle.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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(~ ___)
Modifier et exécuter le code