НачатьНачать бесплатно

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(~ ___)
Редактировать и запускать код