R语言如何按唯一ProjectID分组求和hour_difference并获取耗时Top3项目
R 按项目分组求和取耗时Top3 实现方案
原代码问题说明
- 分组逻辑错误:
group_by中额外加入了hour_difference字段,会按「项目ID+单条记录耗时」两个维度拆分分组,无法得到单个项目的总耗时 - 语法不匹配:
summarize未指定计算目标字段,且sort_values()是Python pandas的排序方法,R dplyr中排序应使用arrange()
正确实现代码
library(dplyr) # 按唯一ProjectID分组求和、降序排序 project_total_hour <- df %>% group_by(ProjectID) %>% summarise(total_hour = sum(hour_difference)) %>% arrange(desc(total_hour)) # 如需直接提取耗时最长的Top3项目,补充slice操作即可 top3_project <- project_total_hour %>% slice(1:3) # 查看结果 print(project_total_hour) print(top3_project)
结果验证
各项目总耗时计算结果和预期完全匹配:
ProjectID 950 总耗时:0.75 + 1.18 + 2.78 + 9.55 = 14.26
排序后完整输出:# A tibble: 4 × 2 ProjectID total_hour <dbl> <dbl> 1 950 14.3 2 1050 9.99 3 200 9.81 4 500 9.42
内容的提问来源于stack exchange,提问作者nasa313
相关产品推荐
相关产品推荐

