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

如何在R中按姓名计算并添加总工时列

在R中按姓名汇总总工时(类似Excel SUMPRODUCT)

嘿,这个需求在R里其实有两种很实用的实现方式,都能帮你给每行新增对应姓名的总工时列,效果和你说的Excel SUMPRODUCT完全一致。

第一步:先构造你的示例数据

首先我们把你给出的示例转换成R可处理的数据框(注意John Smith是完整姓名,要作为单独一列):

# 创建示例数据框
df <- data.frame(
  Name = c("John Smith", "John Smith", "Hailey", "Hailey"),
  Hours = c(8, 8, 9, 10),
  stringsAsFactors = FALSE
)

方法一:用dplyr包(直观易读,适合复杂操作)

如果你习惯用tidyverse系列工具,dplyr的分组+突变操作逻辑非常清晰:

# 先加载dplyr包(没安装的话先运行install.packages("dplyr"))
library(dplyr)

# 按姓名分组,新增总工时列
df <- df %>%
  group_by(Name) %>%
  mutate(Total_Hours = sum(Hours)) %>%
  ungroup()

运行后你的数据框会新增Total_Hours列,每个John Smith的行对应16,Hailey的行对应19。

方法二:用base R的ave函数(无需额外安装包)

如果你不想加载第三方包,base R自带的ave函数可以直接搞定:

# 直接新增总工时列
df$Total_Hours <- ave(df$Hours, df$Name, FUN = sum)

ave函数会自动按Name分组,对每组的Hours求和,返回和原数据长度一致的结果,完美匹配每行对应的姓名。

运行任意一种方法后,你的数据框都会变成这样:

Name Hours Total_Hours
1 John Smith     8          16
2 John Smith     8          16
3     Hailey     9          19
4     Hailey    10          19

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:02:40