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

R语言使用group_by()与prod()计算分组内指定类型行的乘积

解决方案

场景1:id可唯一标识A/B/C/total分组

直接修改原有代码中prod()的计算范围,仅筛选type为A、B的数值参与计算即可:

library(dplyr)
df_result <- df %>%
  group_by(id) %>%
  mutate(
    value_num = as.numeric(value),
    value = if_else(
      type == "total",
      as.character(prod(value_num[type %in% c("A", "B")], na.rm = TRUE)),
      value
    )
  ) %>%
  ungroup() %>%
  select(-value_num)

场景2:id无法唯一标识分组(同id下有多组A/B/C/total组合)

首先给每组完整的A/B/C/total组合生成专属分组标识,再按id+专属分组标识分组计算即可:

library(dplyr)
df2_result <- df2 %>%
  # 生成组标识:每遇到一个A就新增一组,适配每组以A开头的结构
  mutate(group_id = cumsum(type == "A")) %>%
  # 按id+自定义组标识分组
  group_by(id, group_id) %>%
  mutate(
    value_num = as.numeric(value),
    value = if_else(
      type == "total",
      as.character(prod(value_num[type %in% c("A", "B")], na.rm = TRUE)),
      value
    )
  ) %>%
  ungroup() %>%
  select(-group_id, -value_num)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:15:04