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

如何在R DataFrame中按名称合并行:部分列求和部分列求平均

按名称合并DataFrame并对不同列执行求和/均值计算

需要按name列合并DataFrame中名称相同的行:其中column1和column2执行求和操作,column3计算平均值,真实数据集包含500行12列。

示例原始数据

df <- data.frame(
  name = c("a", "a", "b", "c"),
  column1 = c(53, 16, 89, 67),
  column2 = c(43, 19, 99, 12),
  column3 = c(0.73, 0.69, 0.12, 0.52)
)

期望处理结果

# name column1 column2 column3
#    a      69      62    0.71
#    b      89      99    0.12
#    c      67      12    0.52

现有代码

df <- df %>%
  group_by(name) %>%
  summarise(across(c(column1, column2), sum))

修改方案

你可以在summarise中直接添加对column3的均值计算,以下两种写法都能满足需求:

写法1:简洁拆分指定

这种方式直观易懂,适合少量列的不同处理需求:

library(dplyr)

df <- df %>%
  group_by(name) %>%
  summarise(
    across(c(column1, column2), sum),
    column3 = mean(column3)
  )

写法2:统一映射列与函数

如果后续有更多列需要不同的聚合逻辑,可以用列表形式指定列和对应函数,扩展性更强:

df <- df %>%
  group_by(name) %>%
  summarise(
    across(
      .cols = c(column1, column2, column3),
      .fns = list(
        column1 = sum,
        column2 = sum,
        column3 = mean
      ),
      .names = "{.col}"  # 保持原列名不变
    )
  )

运行上述代码后,就能得到你需要的合并结果:相同name的行被合并,column1和column2求和,column3取平均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:48:29