我正在研究 R for Data Science 的问题和网站的解决方案:https ://jrnold.github.io/r4ds-exercise-solutions/exploratory-data-analysis.html 。
我正在研究的问题是:
使用 geom_tile() 和 dplyr 来探索平均航班延误如何随目的地和一年中的月份而变化。是什么让情节难以阅读?你怎么能改进它?
这是他们正在使用的数据,来自 nycflights123 “flights” 数据集:
dput(head(flights))
structure(list(year = c(2013L, 2013L, 2013L, 2013L, 2013L, 2013L
), month = c(1L, 1L, 1L, 1L, 1L, 1L), day = c(1L, 1L, 1L, 1L,
1L, 1L), dep_time = c(517L, 533L, 542L, 544L, 554L, 554L), sched_dep_time = c(515L,
529L, 540L, 545L, 600L, 558L), dep_delay = c(2, 4, 2, -1, -6,
-4), arr_time = c(830L, 850L, 923L, 1004L, 812L, 740L), sched_arr_time = c(819L,
830L, 850L, 1022L, 837L, 728L), arr_delay = c(11, 20, 33, -18,
-25, 12), carrier = c("UA", "UA", "AA", "B6", "DL", "UA"), flight = c(1545L,
1714L, 1141L, 725L, 461L, 1696L), tailnum = c("N14228", "N24211",
"N619AA", "N804JB", "N668DN", "N39463"), origin = c("EWR", "LGA",
"JFK", "JFK", "LGA", "EWR"), dest = c("IAH", "IAH", "MIA", "BQN",
"ATL", "ORD"), air_time = c(227, 227, 160, 183, 116, 150), distance = c(1400,
1416, 1089, 1576, 762, 719), hour = c(5, 5, 5, 5, 6, 5), minute = c(15,
29, 40, 45, 0, 58), time_hour = structure(c(1357034400, 1357034400,
1357034400, 1357034400, 1357038000, 1357034400), tzone = "America/New_York", class = c("POSIXct",
"POSIXt"))), row.names = c(NA, -6L), class = c("tbl_df", "tbl",
"data.frame"))
所以这是他们在我分享的链接中给出的答案:
flights %>%
group_by(month, dest) %>% # This gives us (month, dest) pairs
summarise(dep_delay = mean(dep_delay, na.rm = TRUE)) %>%
group_by(dest) %>% # group all (month, dest) pairs by dest ..
filter(n() == 12) %>% # and only select those that have one entry per month
ungroup() %>%
mutate(dest = reorder(dest, dep_delay)) %>%
ggplot(aes(x = factor(month), y = dest, fill = dep_delay)) +
geom_tile() +
labs(x = "Month", y = "Destination", fill = "Departure Delay")
#> `summarise()` regrouping output by 'month' (override with `.groups` argument)
这产生了这个:
我对此有很多疑问:
- 首先,他/她为什么要分组两次?我看到有一个按月/目的地进行的初始分组,但随后它们又按目的地向下两行分组。
- 接下来,那么取消分组的目的是什么?也许 ungroup 功能有一个我不知道的目的,但听起来违反直觉。
- 最后,这些数据仍然不像本书想要的那样“干净”。当然,它按月显示了一些热图,但是绘制在 y 上的目的地看起来就像字母汤,所以很难得出任何实际的上下文。
我想我现在的两个主要问题是我不明白他们是如何提出这个问题的,我也不明白为什么这是一个可以接受的答案,因为它没有显示太多。