我目前正在一个项目上,需要一些帮助。我想使用统计模型预测航班延误的时长。该数据集不包含航班延误的时长,但可以根据实际和计划的起飞时间进行计算。
如果您需要整个数据集,我将提供一个链接:
https://drive.google.com/file/d/11BXmJCB5UGEIRmVkM-yxPb_dHeD2CgXa/view?usp=sharing
然后我运行以下代码
Delays <- read.table("FlightDelays.csv", header=T, sep=",")
DepatureTime <- strptime(formatC(Delays$deptime, width = 4, format = "d", flag = "0"), "%H%M")
ScheduleTime <- strptime(formatC(Delays$schedtime, width = 4, format = "d", flag = "0"), "%H%M")
DelayTime <- as.numeric(difftime(DepatureTime, ScheduleTime))/60
DelayData <- data.frame(DelayTime, Delays)
上面的代码使我能够获得以分钟为单位的延迟时间
对于那些不想获取整个数据集的人,我现在将提供一些观察形式的小例子
structure(list(schedtime = c(1455, 1640, 1245, 1715, 1039 , 2120), deptime = c(1455, 1640, 1245, 1709, 1035, 0010)), .Names = c("schedtime", "deptime"), row.names = c(NA, 6L), class = "data.frame")
如果您运行的是我一开始所做的代码,那么第六次观察的延迟时间将为-1270分钟,而不是170分钟的延迟,因为我相信strptime
会假设您仍然在同一时间,并且没有意识到延误导致了出发时间是第二天的早些时候。
我如何获取识别延迟的代码,有时会意味着出发时间会持续到第二天?
谢谢您的帮助
答案 0 :(得分:1)
使用lubridate
:
library(lubridate)
ScheduleTime <- as_datetime(formatC(Delays$schedtime, width = 4, format = "d", flag = "0"),format="%H%M")
DepatureTime <- as_datetime(formatC(Delays$deptime, width = 4, format = "d", flag = "0"),format="%H%M") + hours(ifelse(Delays$deptime < Delays$schedtime & Delays$schedtime > 2000,24,0))
DelayTime <- difftime(DepatureTime, ScheduleTime)/60
DelayData <- data.frame(DelayTime, Delays)
问题是,您必须确定何时不合理,与deptime
相比,schedtime
较小的值并不代表白班,而是代表航班早点离开。我没有找到解决这个问题的一般方法。