purrr и гистограммы
Теперь вы объедините всё, что узнали, и построите фасетную гистограмму на основе двух списков. Вы снова будете работать с данными о «Звёздных войнах» из наборов sw_films и sw_people, чтобы ответить на вопрос:
- Каково распределение роста персонажей в каждом из фильмов «Звёздных войн»?
Действие разных фильмов происходит на разных планетах, поэтому распределение роста персонажей может различаться. Сначала преобразуйте оба набора данных во фреймы данных — ggplot() требует именно такой формат входных данных. Затем объедините их и постройте гистограмму, где каждый фильм отображается в отдельном фасете (подграфике).
Это упражнение является частью курса
Основы функционального программирования с purrr
Инструкции к упражнению
- Создайте фрейм данных с полем
"title"(название фильма) и полем"characters"(персонажи) из набораsw_films. - Создайте фрейм данных с полями
"height","mass","name"и"url"из набораsw_people. - Объедините два фрейма данных по ключам
"characters"и"url". - Постройте гистограмму с помощью
ggplot(), задавx = heightи разбивку по фасетам на основеfilmtitle.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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(~ ___)