在R语言中按条件对数据框的值求和并添加新列
解决方案
方法1:使用Base R的ave()函数
ave()函数可直接对分组数据计算统计量,并将结果填充到对应分组的每一行:
plots$sum <- ave(plots$value, plots$plot, FUN = sum)
运行后查看结果:
plots # plot value sum # 1 A 1 3 # 2 A 1 3 # 3 A 1 3 # 4 B 2 4 # 5 B 2 4 # 6 C 3 9 # 7 C 3 9 # 8 C 3 9
方法2:使用dplyr包(tidyverse生态)
若习惯tidyverse风格的代码,可通过分组后添加新列实现:
先确保加载dplyr包(首次使用需安装):
# install.packages("dplyr") # 首次使用时执行安装 library(dplyr)
执行分组求和操作:
plots <- plots %>% group_by(plot) %>% mutate(sum = sum(value)) %>% ungroup() # 可选,根据后续操作需求取消分组
最终结果与Base R方法完全一致。
内容的提问来源于stack exchange,提问作者starski
相关产品推荐
相关产品推荐

