開始使用免費開始

purrr 與直方圖

現在你要把目前學到的重點整合起來,從兩個不同的清單出發,最後產生一個帶分面(facets)的直方圖。你會再次使用 sw_filmssw_people 資料集中的 Star Wars 資料,來回答這個問題:

  • 各部 Star Wars 電影中,角色身高的分佈是什麼樣子?

不同電影發生在不同的行星,因此你可能會看到角色身高的分佈不同。你的第一個任務是先把兩個資料集轉成 data frame,因為 ggplot() 需要 data frame 作為輸入。接著把它們連接起來,並繪製結果:一個直方圖,且每部電影各有一個不同的分面(子圖)。

本練習屬於課程

使用 purrr 的函式式程式設計基礎

檢視課程

練習說明

  • sw_films 資料集建立一個 data frame,包含每部電影的 "title",以及每部電影的 "characters"
  • sw_people 建立一個 data frame,包含 "height""mass""name""url" 元素。
  • 使用 "characters" 與 "url" 這兩個鍵把兩個 data frame 連接起來。
  • 建立一個 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(~ ___)
編輯並執行程式碼