R语言按factor因子水平对多列数值分组求和的实现问题
方法1:使用dplyr包(tidyverse生态,写法最直观)
如果已经安装tidyverse或dplyr包,可以直接用分组汇总语法:
# 加载包 library(dplyr) # 分组求和 df_agg <- df %>% group_by(brand) %>% summarise(across(where(is.numeric), sum))
代码说明:group_by(brand)指定按品牌分组,across(where(is.numeric), sum)表示对所有数值列执行求和运算,输出结果就是包含所有数值列汇总结果的整合表。
方法2:基础R实现(无需安装额外包)
用R内置的aggregate函数即可一行实现:
df_agg <- aggregate(. ~ brand, data = df, FUN = sum)
代码说明:公式里的.代表除分组列brand之外的所有列,会自动对这些列按品牌分组求和。
方法3:data.table实现(适合处理大数据集,性能更高)
如果习惯用data.table语法,可以用以下写法:
library(data.table) # 转换为data.table格式 setDT(df) # 分组求和 df_agg <- df[, lapply(.SD, sum), by = brand]
内容的提问来源于stack exchange,提问作者codeforfun
相关产品推荐
相关产品推荐

