使用dplyr统计各机场航空公司竞争对手数量的技术问询
解决方案:用dplyr统计各机场的航空公司竞争对手数量
核心思路
通过dplyr的分组+唯一值统计实现需求,无需使用count函数:
- 按目标机场(出发/到达)分组
- 用
n_distinct()直接统计每组内不同航空公司的数量
代码实现(针对出发机场)
假设你的数据集名为flight_data,以下代码生成出发机场的竞争对手数量汇总表:
library(dplyr) # 生成出发机场的航空公司竞争汇总表 origin_airport_competitors <- flight_data %>% # 按机场名称+ID分组,避免同名机场混淆 group_by(origin, origin_airport_ID) %>% # 统计每个机场的唯一航空公司数量 summarise(competitor_count = n_distinct(op_career), .groups = "drop") # 查看结果 origin_airport_competitors
代码说明
group_by(origin, origin_airport_ID):同时绑定机场名称和ID,确保分组的唯一性n_distinct(op_career):直接计算分组内的唯一航空公司数量,完全替代count的需求.groups = "drop":完成统计后取消分组状态,输出整洁的二维汇总表
扩展:同时统计出发+到达机场
如果需要覆盖出发和到达两类机场,可通过长格式转换实现:
# 生成所有机场的航空公司竞争汇总表 all_airport_competitors <- flight_data %>% # 将出发/到达机场的字段转换为长格式 pivot_longer( cols = c(origin, dest), names_to = "airport_role", values_to = "airport_name" ) %>% pivot_longer( cols = c(origin_airport_ID, dest_airport_ID), names_to = "airport_id_role", values_to = "airport_id" ) %>% # 按机场名称+ID分组 group_by(airport_name, airport_id) %>% summarise(competitor_count = n_distinct(op_career), .groups = "drop")
内容的提问来源于stack exchange,提问作者Nature Story
相关产品推荐
相关产品推荐

