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

R语言使用tidyverse按多列条件对S列求和并输出数据框

R语言按指定条件列对目标列求和(tidyverse实现)

需求说明

需要对给定数据集,按指定的条件列,分别统计条件列取值为1时对应的S列数值总和:

  • 指定条件列存储为变量:condition_columns = c('A', 'B')
  • 输出要求:返回两列结构的数据框,第一列为条件列名称,第二列为对应S列的求和结果,示例中A列取1时S总和为490,B列取1时S总和为250。

实现代码

首先加载tidyverse套件,核心用dplyr做数据处理、tidyr做长宽表转换:

library(tidyverse)

# --------------- 核心计算逻辑 ---------------
# 替换下面的df为你自己读入的数据集变量名即可
sum_result <- df %>%
  # 提取需要用到的条件列、待求和的S列
  select(all_of(condition_columns), S) %>%
  # 将多个条件列从宽格式转为长格式,方便统一分组计算
  pivot_longer(
    cols = all_of(condition_columns),
    names_to = "condition_col",
    values_to = "flag"
  ) %>%
  # 仅保留条件列取值为1的行
  filter(flag == 1) %>%
  # 按条件列名称分组
  group_by(condition_col) %>%
  # 分组求和得到结果
  summarise(S_sum = sum(S))

结果说明

运行代码后得到的sum_result和期望输出结构完全一致:

  • condition_col列依次显示条件列名A、B
  • S_sum列对应显示每个条件列取1时的S列总和,即A对应490,B对应250

如果你的条件判断规则不是「取值等于1」,只需要修改filter()里的判断逻辑即可适配其他场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:15:41