使用R - 从表中查找延迟时间最长的48小时nycflights13 ::航班

时间:2017-09-24 13:58:54

标签: r tidyverse

我需要找到表格 nycflights13 ::航班 中最长时间延迟的48小时(在整个过程中)。

我不确定是否需要计算连续48小时的延误或计算2天的延误。下面是我的R代码,用于计算每天的延迟次数。如何修改它以给我48小时的最差延迟?

library(dplyr)

flight_delayed_48<-nycflights13::flights%>%
  group_by(origin,month,day,hour)%>%
  summarise(delays = sum(dep_delay>0, na.rm = TRUE))%>%

更新了滞后代码:

library(dplyr)

flight_delayed_48<-nycflights13::flights%>%
  group_by(origin,month,day)%>%
  summarise(delays = sum(dep_delay>0, na.rm = TRUE))%>%
  mutate(delays_2days = lag(sum(delays), n=2, order_by = day))

更新了代码和结果:

flight_48<-nycflights13::flights%>% 
  mutate( time_hr = as.POSIXct(time_hour, format ="%Y/%m/%d %H:%M:%S"))%>%
  group_by(origin, time_hr)%>%
  summarise(delay = sum(dep_delay>0, na.rm = T))
  #### mutate(delay_5h = delay + lead(delay, n=5, order_by=time_hr))

以上代码根据延迟进行汇总,并使用列time_hr和delay创建下表。我想添加另一列来计算每隔5小时的延迟总和。使用excel我已经生成了 delay_5h 的数据,但我怎么能用R做同样的事情。我尝试使用n = 5和order_by = time_hr但不能得到相同结果的lead函数。

有关我的尝试,请参阅上述代码的上一行注释

time_hr       delay delay_5h
1/1/13 5:00     01   25
1/1/13 6:00     06   32
1/1/13 7:00     04   28
1/1/13 8:00     07   34
1/1/13 9:00     07   45
1/1/13 10:00    08   51
1/1/13 11:00    02   58
1/1/13 12:00    10   75
1/1/13 13:00    18   86
1/1/13 14:00    13   76
1/1/13 15:00    15   79
1/1/13 16:00    19   75
1/1/13 17:00    21   58
1/1/13 18:00    08   40
1/1/13 19:00    16   34
1/1/13 20:00    11   38
1/1/13 21:00    02   27
1/1/13 22:00    03   25
1/2/13 05:00    02   22
1/2/13 06:00    20   20

1 个答案:

答案 0 :(得分:0)

如果仅查找发生大多数延迟的2天,可以使用lead()或lag()来查找2天(2013年7月3日至4日)。

flights %>% 
  select(year,month,day,dep_delay) %>% 
  group_by(year,month,day) %>% 
  summarise(sum_delay = sum(dep_delay, na.rm = TRUE)) %>% 
  mutate(back = sum_delay + lag(sum_delay, 1), forward = sum_delay + 
  lead(sum_delay, 1)) %>% 
  arrange(desc(forward))

但如果您正在寻找跨越48小时的连续日期,那么这不包括在内。