Bắt đầu ngayBắt đầu miễn phí

purrr và biểu đồ histogram

Giờ bạn sẽ tổng hợp mọi thứ đã học, bắt đầu với hai list khác nhau và biến chúng thành một biểu đồ histogram có phân mảnh (faceted). Bạn sẽ tiếp tục làm việc với dữ liệu Star Wars từ hai bộ dữ liệu sw_filmssw_people để trả lời câu hỏi:

  • Phân bố chiều cao của các nhân vật trong từng bộ phim Star Wars như thế nào?

Các phim diễn ra trên những hành tinh khác nhau, nên bạn có thể kỳ vọng thấy các phân bố chiều cao khác nhau của nhân vật. Nhiệm vụ đầu tiên là chuyển hai bộ dữ liệu này thành các data frame vì ggplot() yêu cầu đầu vào là data frame. Sau đó bạn sẽ nối chúng lại và vẽ kết quả: một biểu đồ histogram với các facet (subplot) khác nhau cho từng bộ phim.

Bài tập này là một phần của khóa học

Nền tảng Lập trình Hàm với purrr

Xem khóa học

Hướng dẫn bài tập

  • Tạo một data frame với "title" của mỗi phim và "characters" từ mỗi phim trong bộ dữ liệu sw_films.
  • Tạo một data frame với các phần tử "height", "mass", "name""url" từ sw_people.
  • Nối hai data frame bằng các khóa "characters" và "url".
  • Tạo biểu đồ histogram ggplot() với x = height, phân mảnh (facet) theo filmtitle.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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(~ ___)
Chỉnh sửa và Chạy Mã