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

按NAME分组求和MONEY时,如何保留DataFrame的其他列?

分组求和并保留所有列的解决方案

在dplyr中,summarise()的作用是聚合分组数据,仅返回分组列和你定义的聚合列,因此会丢失其他列。要实现分组求和同时保留所有列,有两种常用方法:

方法1:用mutate()替代summarise()

mutate()会在原数据框基础上新增求和列,不会删除任何原有列。每个分组的求和结果会对应填充到该组的每一行:

money = money %>%
  group_by(NAME) %>%
  mutate(SUM_MONEY = sum(MONEY)) %>%
  ungroup() # 可选,取消数据框的分组状态

方法2:分组内其他列值一致时,在summarise()中显式保留这些列

如果同一NAME分组下的其他列(比如年龄、性别等)值完全相同,可以用first()/last()等函数提取组内该列的固定值,和求和结果一起返回:

# 假设需要保留的其他列是AGE、GENDER
money = money %>%
  group_by(NAME) %>%
  summarise(
    SUM_MONEY = sum(MONEY),
    AGE = first(AGE),
    GENDER = first(GENDER),
    .groups = "drop" # 取消分组,返回普通数据框
  )

注意:如果分组内其他列存在不同值,方法2会丢失部分数据,此时优先选择方法1。

内容的提问来源于stack exchange,提问作者Lucas Esteves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:34:57