You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建航班地面停留区间并计算单站最大同时在港航班数

单站最大同时在港航班数计算方案(R语言)

核心逻辑

计算单站最大同时在港数,最高效的方式是事件点统计法:将航班到达视为「在港数+1」事件,出发视为「在港数-1」事件,按时间排序后遍历统计,记录峰值即可。无需复杂的区间配对,逻辑清晰且性能更优。

步骤实现

1. 数据预处理(确保时间格式正确)

首先将时间列转换为POSIXct格式,保证时间计算有效:

library(dplyr)

# 构造示例数据(替换为你的实际数据)
df <- data.frame(
  REG = c("XYZ", "XYZ", "KLN", "KLN"),
  DEP = c("ZRH", "GVA", "MUC", "GVA"),
  ARV = c("GVA", "ZRH", "GVA", "CGD"),
  STD = as.POSIXct(c("2021-08-01 07:20:00", "2021-08-01 09:20:00", "2021-08-01 06:00:00", "2021-08-01 08:45:00")),
  STA = as.POSIXct(c("2021-08-01 08:35:00", "2021-08-01 10:35:00", "2021-08-01 07:10:00", "2021-08-01 10:10:00"))
)

2. 生成事件数据集

拆分到达和出发事件,标记数量变化:

# 到达事件:机场为目的地ARV,时间为STA,在港数+1
arrival_events <- df %>%
  select(airport = ARV, time = STA, delta = 1)

# 出发事件:机场为出发地DEP,时间为STD,在港数-1
departure_events <- df %>%
  select(airport = DEP, time = STD, delta = -1)

# 合并并按机场、时间排序
all_events <- bind_rows(arrival_events, departure_events) %>%
  arrange(airport, time)

3. 计算最大同时在港数

按机场分组,累计事件变化值,取最大值:

max_on_ground <- all_events %>%
  group_by(airport) %>%
  mutate(current_count = cumsum(delta)) %>%
  summarise(max_simultaneous = max(current_count, na.rm = TRUE))

# 查看结果
print(max_on_ground)

示例数据运行后,GVA机场的最大同时在港数为2,符合预期。


补充:正确的停留区间构建方法

如果确实需要构建航班在机场的停留区间(比如用于其他分析),可以通过同一飞机(REG)的航班序列配对:

library(dplyr)

stay_intervals <- df %>%
  group_by(REG) %>%
  arrange(STD) %>%  # 按出发时间排序,保证航班顺序正确
  mutate(
    stay_airport = lag(ARV),  # 前一班的到达机场即停留机场
    stay_start = lag(STA),    # 停留开始时间为前一班的到达时间
    stay_end = STD            # 停留结束时间为当前班的出发时间
  ) %>%
  # 过滤有效停留:排除首班(无前序航班),且当前出发机场等于前序到达机场
  filter(!is.na(stay_airport) & stay_airport == DEP) %>%
  select(REG, stay_airport, stay_start, stay_end)

# 查看区间结果
print(stay_intervals)

原代码问题分析

你编写的代码存在以下核心问题:

  • 嵌套循环遍历所有i/j,未关联同一飞机(REG)的航班,导致区间配对完全错误
  • min(df$STD[i])仅取单一行的STD值(无意义),未针对同一REG的航班做时间关联
  • 函数最终仅返回单个区间,无法覆盖所有航班的停留情况

内容的提问来源于stack exchange,提问作者Sony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:31:01