【发布时间】:2019-09-27 17:52:36
【问题描述】:
我正在研究 R4DS,目前正在进行 5.6.7 练习 (https://r4ds.had.co.nz/transform.html#exercises-11)。
这里的第 1 点要求考虑有关航班典型延误特征的一些场景。第一个子要点是“50% 的时间提前 15 分钟,50% 的时间晚 15 分钟”。
我想在“nycflights13”数据集中查找晚到 15 分钟和早到 15 分钟的航班。
到目前为止,我创建了一个只有年、月、日、尾号和到达延迟的新数据框。我还使用 dplyr 变异并添加了“15_min_delay”和“15_min_early”逻辑列。
接下来,我使用 plyr 进行过滤以创建一个新数据框,其中仅包含提前 15 分钟或晚 15 分钟的航班。
从这里开始,我想对 tailnums 进行分组,我发现我有大约 2.7k 个独特的 tailnums,但我有 9266 个观察值。因此,我知道一些尾数会重复。
创建r odd_delays_new 后,我有点不知所措。我尝试创建一个内部带有 ifelse 的 for 循环,以循环遍历所有 9,266 个观察结果并 +1 到延迟计数器或早期计数器,但这给了我一个错误。
odd_delays <- flights %>%
select(year, month, day, tailnum, arr_delay) %>%
mutate("15_minute_delay" = arr_delay == 15, "15_minute_early" = arr_delay == -15)
length(odd_delays$"15_minute_delay"[odd_delays$"15_minute_delay" == TRUE])
length(odd_delays$"15_minute_early"[odd_delays$"15_minute_early" == TRUE])
odd_delays_new <- odd_delays %>%
filter(odd_delays$`15_minute_delay` == TRUE | odd_delays$`15_minute_early` == TRUE)
ifelse(odd_delays_new$`15_minute_delay` == TRUE, delay = delay + 1, early = early + 1)
我希望我的结果是一个 3 列数据框。第一列是尾号,第二列是飞机延迟 15 分钟到达的次数,第三列是飞机提前 15 分钟到达的次数。
【问题讨论】:
-
你不想按航班而不是tailnum分组吗?另外,我会研究 dplyr::summarise()。