如何在R中按姓名汇总工作时长?
在R中按姓名汇总工作时长并添加总计时长列
先构建示例数据框
data <- data.frame( Name = c("John", "John", "Mary", "Bob", "Bob", "Bob"), `Job #` = c(1, 2, 1, 1, 2, 3), `Job duration` = c(10, 5, 30, 7, 7, 7) )
方法一:使用Base R的ave()函数
ave()函数可直接按分组计算并返回与原数据等长的结果,适合直接添加新列:
data$job_duration_total <- ave(data$`Job duration`, data$Name, FUN = sum)
方法二:使用dplyr包(tidyverse风格)
如果习惯tidyverse语法,用分组+mutate操作更直观:
# 未安装dplyr时先执行安装 install.packages("dplyr") library(dplyr) # 分组计算并添加总计时长列 data <- data %>% group_by(Name) %>% mutate(job_duration_total = sum(`Job duration`)) %>% ungroup()
执行后,data的job_duration_total列会对应每个姓名的工作时长总和:John为15,Mary为30,Bob为21。
内容的提问来源于stack exchange,提问作者Jérôme Fortier
相关产品推荐
相关产品推荐

