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

如何用R按唯一ID将指定行的值求和至新列?

按唯一ID求和生成新列的R实现方法

刚接触R别担心,这个需求其实很常见,用几个简单的函数就能搞定!我先给你模拟一份示例输入数据,再分别介绍两种实用方法:

首先,创建示例输入数据

假设你的数据集是这样的(ID是唯一标识列,另外三列是需要求和的数值列):

df <- data.frame(
  ID = c("A", "A", "B", "B", "C"),
  Value1 = c(10, 20, 30, 40, 50),
  Value2 = c(5, 15, 25, 35, 45),
  Value3 = c(2, 8, 12, 18, 22)
)

方法1:用dplyr包(新手友好,语法直观)

dplyr是R里处理数据的热门包,语法清晰易读,适合新手快速上手:

  1. 先安装并加载包(如果没安装过的话):
install.packages("dplyr") # 仅第一次使用时需要
library(dplyr)
  1. 两种常见场景:

场景1:在原数据中添加「每个ID对应的总和列」

如果想保留所有原始行,同时给每行加上其所属ID的总求和值,可以用group_by() + mutate():

df_with_total <- df %>%
  group_by(ID) %>% # 按ID分组
  mutate(Total = sum(Value1, Value2, Value3)) %>% # 计算当前ID的所有值之和,生成新列Total
  ungroup() # 取消分组,避免后续操作受影响

# 查看结果
print(df_with_total)

场景2:按ID聚合,生成仅含唯一ID和对应求和值的新数据框

如果只需要每个ID的唯一行,以及各列的求和结果,用group_by() + summarize():

df_summary <- df %>%
  group_by(ID) %>%
  summarize(
    Total_Value1 = sum(Value1), # 对Value1按ID求和
    Total_Value2 = sum(Value2), # 对Value2按ID求和
    Total_All = sum(Value1, Value2, Value3) # 对所有数值列求和
  ) %>%
  ungroup()

# 查看结果
print(df_summary)

方法2:基础R实现(无需额外安装包)

如果不想安装新包,用基础R的ave()函数也能实现场景1的需求:

# 给原数据添加Total列,计算每个ID的所有数值列之和
df$Total <- ave(df$Value1 + df$Value2 + df$Value3, df$ID, FUN = sum)

# 查看结果
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:50:30