purrr とヒストグラム
これまで学んだことをすべて組み合わせていきます。まずは 2 つの異なるリストから始め、それらをファセット付きヒストグラムに変換します。sw_films と sw_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(~ ___)