始める無料で始める

purrr とヒストグラム

これまで学んだことをすべて組み合わせていきます。まずは 2 つの異なるリストから始め、それらをファセット付きヒストグラムに変換します。sw_filmssw_people のデータセットにある Star Wars のデータを使って、次の問いに答えます。

  • 各 Star Wars 作品に登場するキャラクターの身長分布はどうなっていますか?

作品ごとに舞台となる惑星が異なるため、キャラクターの身長分布にも違いが表れるかもしれません。最初のタスクは、ggplot() がデータフレーム入力を必要とするため、2 つのデータセットをデータフレームに変換することです。次にそれらを結合し、各作品ごとに異なるファセット(サブプロット)を持つヒストグラムとして結果を可視化します。

この演習はコースの一部です

purrr で学ぶ関数型プログラミング入門

コースを見る

演習の手順

  • sw_films データセットから各作品の "title" と、その作品の "characters" を含むデータフレームを作成します。
  • sw_people から "height""mass""name""url" 要素を含むデータフレームを作成します。
  • 2 つのデータフレームを、キー "characters" と "url" を使って結合します。
  • x = height を指定して ggplot() のヒストグラムを作成し、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(~ ___)
コードを編集して実行