在R中按Bus ID汇总成本与利润总和的代码实现方法
在R中按巴士ID汇总成本利润并找出最盈利路线
1. 加载必要工具包
用dplyr处理数据语法简洁易读,若未安装先执行安装命令:
install.packages("dplyr")
安装完成后加载包:
library(dplyr)
2. 示例数据集(替换成你的真实数据即可)
先构造示例数据方便测试代码:
bus_data <- data.frame( bus_id = c(1,1,1,2,2,3), from = c("北京","上海","广州","成都","重庆","深圳"), to = c("上海","广州","北京","重庆","成都","杭州"), bus_fare = c(150,200,180,120,130,250), costs = c(80,90,75,60,65,100), profit_from_trip = c(70,110,105,60,65,150) )
3. 按巴士ID汇总总成本与总利润
通过分组汇总计算每辆巴士的累计成本和利润:
# 分组计算总成本与总利润,忽略缺失值避免报错 bus_summary <- bus_data %>% group_by(bus_id) %>% summarise( total_costs = sum(costs, na.rm = TRUE), total_profit = sum(profit_from_trip, na.rm = TRUE) ) # 查看汇总结果 print(bus_summary)
4. 找出每辆巴士的最盈利路线
分两种场景处理:
- 场景1:保留所有利润最高的路线(若存在并列第一的情况)
most_profitable_routes <- bus_data %>% group_by(bus_id) %>% filter(profit_from_trip == max(profit_from_trip, na.rm = TRUE)) %>% ungroup()
- 场景2:仅保留每辆巴士的第一条最高利润路线(不保留并列项)
most_profitable_routes <- bus_data %>% group_by(bus_id) %>% slice_max(profit_from_trip, n = 1, with_ties = FALSE) %>% ungroup()
运行后查看结果:
print(most_profitable_routes)
5. 合并汇总数据与最盈利路线(可选)
若需将汇总的成本利润和最盈利路线合并到同一张表,用left_join实现:
combined_result <- most_profitable_routes %>% left_join(bus_summary, by = "bus_id") print(combined_result)
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

