You need to enable JavaScript to run this app. R语言按个体分组对多观测amount变量求和生成单行数据集
优惠活动
大模型
产品
解决方案
定价
更多

R语言按个体分组对多观测amount变量求和生成单行数据集

按个体聚合amount的R实现方案

首先需要注意:示例数据集里的amount列当前是字符类型,直接执行求和会触发报错,必须先转成数值型再做聚合。

基于dplyr的实现(tidyverse生态最常用,可读性最优)

处理数千个个体的规模性能完全够用,输出结果就是每个个体一行的标准dataframe:

library(dplyr)

agg_df <- d %>%
  # 把字符型amount转成数值型
  mutate(amount = as.numeric(amount)) %>%
  # 按individual字段分组
  group_by(individual) %>%
  # 计算每个个体的amount总和,自动解除分组避免后续操作异常
  summarise(total_amount = sum(amount), .groups = "drop")

基于base R的原生实现(无需加载任何第三方包)

适合不想依赖外部扩展包的场景,用R自带函数就能完成聚合:

# 转换amount的类型为数值
d$amount <- as.numeric(d$amount)
# 用公式语法指定分组列和待聚合列
agg_base <- aggregate(amount ~ individual, data = d, FUN = sum)
# 调整列名,提升结果可读性
colnames(agg_base)[2] <- "total_amount"

基于data.table的实现(适合更大规模的数据场景)

如果后续数据量持续增长,该方案的运行效率优势会更明显:

library(data.table)
dt <- as.data.table(d)
# 单链完成类型转换、分组、全量聚合
agg_dt <- dt[, amount := as.numeric(amount)][
  , .(total_amount = sum(amount)), by = individual
]

之前尝试pivot_wider的适配性说明

pivot_wider的核心作用是把长表的多行观测拆成独立的宽表列,适合需要逐行保留每一条原始观测值的场景;而你的需求是对同一individual对应的多个amount值做汇总压缩,直接分组求和的逻辑完全匹配要求的粒度,不需要走宽表转换的路径。

内容的提问来源于stack exchange,提问作者kerryp。

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 06:36:08