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>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éessw_films. - Créez un data frame avec les éléments
"height","mass","name"et"url"desw_people. - Joignez les deux data frames en utilisant les clés
"characters" et"url". - Créez un histogramme
ggplot()avecx = height, facetté parfilmtitle.
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(~ ___)