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

R语言基于nycflights13如何按航班总数筛选每月Top5目的地

按月份筛选航班量Top5目的地的实现方法

你现有代码已经完成了有效航班过滤、分组聚合、排序的核心流程,要实现每个月取航班总量前5的目的地,核心是在聚合完成后按月份重新分组,再提取每组排名前5的记录即可,同时可以简化原有代码里的冗余统计逻辑。

修正后的完整可运行代码

library(dplyr)
library(nycflights13)

flights %>%
  filter(!is.na(air_time)) %>%
  # 直接按月份、目的地分组统计航班总量,替代冗余的mutate+summarise步骤
  count(month, dest, name = "total_flights") %>%
  # 仅按月份分组,为分组取TopN做准备
  group_by(month) %>%
  # 提取每个月航班量最高的前5个目的地,默认保留并列排名
  slice_max(order_by = total_flights, n = 5) %>%
  # 整理结果排序:按月份升序,同月份按航班量降序
  arrange(month, desc(total_flights))

关键注意点

  • 必须重新分组:你原有代码聚合时是按dest + month双维度分组,聚合完成后每个分组仅对应1个目的地1个月的统计值,如果不重新把分组维度改为仅month,后续切片操作会把单条记录当成一组,无法筛选出月度Top5。
  • slice_max()是dplyr中取分组TopN的最简方案:不需要手动编写排名判断逻辑,默认会保留所有并列第5的记录,符合常规统计规则;如果需要严格控制每个月仅返回5条记录(遇到并列也截断),可以加参数with_ties = FALSE。
  • 原有代码的统计逻辑可以简化:你已经提前过滤了air_time为NA的记录,剩余记录都是有效航班,直接用count()统计分组行数即可得到航班总量,不需要额外通过mutate生成中间字段再求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:51:21