如何在dplyr中基于唯一分组值对列进行求和?
在dplyr中实现基于唯一drill的duration总和列
你可以通过以下两种方式快速实现需求:核心逻辑是先提取所有唯一的drill与对应duration的组合,计算这些duration的总和,再将该总和作为新列填充到所有行中。
方法一:分步实现(清晰直观)
library(dplyr) # 计算唯一drill对应的duration总和 total_unique_duration <- df %>% distinct(drill, duration) %>% # 保留唯一的drill-duration配对 pull(duration) %>% # 提取duration列 sum() # 求和 # 给原数据框添加新列 df <- df %>% mutate(total_drill_duration = total_unique_duration)
方法二:紧凑写法(一行完成)
如果想简化代码,可以把逻辑直接整合到mutate操作中:
df <- df %>% mutate(total_drill_duration = sum(distinct(., drill, duration)$duration))
结果说明
两种方法都会生成名为total_drill_duration的新列,所有行的值均为32(即3+5+8+6+10的总和),完全匹配你的需求。
内容的提问来源于stack exchange,提问作者user13973103
相关产品推荐
相关产品推荐

