เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

purrr และฮิสโตแกรม

ถึงเวลานำทุกสิ่งที่เรียนรู้มาประยุกต์ใช้แล้ว โดยจะเริ่มจากลิสต์สองชุดแล้วแปลงเป็นฮิสโตแกรมแบบ faceted จะทำงานกับข้อมูล Star Wars จากชุดข้อมูล sw_films และ sw_people อีกครั้ง เพื่อตอบคำถามต่อไปนี้:

  • การกระจายตัวของความสูงของตัวละครในแต่ละภาพยนตร์ Star Wars เป็นอย่างไร?

ภาพยนตร์แต่ละเรื่องเกิดขึ้นบนดาวเคราะห์ที่ต่างกัน จึงอาจเห็นการกระจายตัวของความสูงที่แตกต่างกันในแต่ละเรื่อง ขั้นแรกให้แปลงชุดข้อมูลทั้งสองให้เป็น data frame เนื่องจาก ggplot() ต้องการข้อมูลในรูปแบบนั้น จากนั้น join ทั้งสองเข้าด้วยกัน แล้ว plot ผลลัพธ์เป็นฮิสโตแกรมที่มี facet หรือกราฟย่อยแยกสำหรับแต่ละภาพยนตร์

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Foundations of Functional Programming with purrr

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง data frame ที่มีข้อมูล "title" ของแต่ละภาพยนตร์ และ "characters" จากแต่ละภาพยนตร์ในชุดข้อมูล sw_films
  • สร้าง data frame ที่มีข้อมูล "height", "mass", "name" และ "url" จาก sw_people
  • Join data frame ทั้งสองเข้าด้วยกันโดยใช้คีย์ "characters" และ "url"
  • สร้างฮิสโตแกรมด้วย ggplot() โดยกำหนด x = height และแบ่ง facet ตาม 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(~ ___)
แก้ไขและรันโค้ด