我需要找到表格 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
答案 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小时的连续日期,那么这不包括在内。