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

如何用dplyr的group_by()分组,将每组各值减去type=W行的value?

使用dplyr按组调整数值的解决方案

我明白你的需求啦——就是要给每个scenario分组里的所有value,都减去该组内type为W对应的那个value,对吧?其实用dplyr的group_by()加mutate()完全能搞定,而且写法比你想的简单。

先给你完整的代码示例,你可以直接套用:

# 先加载dplyr包
library(dplyr)

# 模拟你的原始数据
df <- tibble(
  scenario = rep(c("A", "B", "C", "D", "E"), each = 5),
  type = rep(c("U", "V", "W", "X", "Y"), 5),
  value = c(922, 291, 731, 970, 794,
            827, 10, 517, 97, 681,
            26, 410, 706, 865, 385,
            473, 561, 374, 645, 217,
            345, 58, 437, 106, 292)
)

# 核心处理步骤
processed_df <- df %>%
  group_by(scenario) %>%
  mutate(value = value - value[type == "W"]) %>%
  ungroup() # 可选,如果你之后不需要分组状态了

# 查看处理后的数据
print(processed_df)

关键逻辑解释:

  • group_by(scenario):把数据按scenario分成独立的组,后续操作都会在每个组内单独执行
  • mutate(value = value - value[type == "W"]):在每个组里,value[type == "W"]会精准定位到当前组中type为W的那个数值,然后让组内所有value都减去这个数值——这样type为W的行自然就变成0了,完全符合你想要的效果
  • ungroup():如果后续不需要保留分组状态,加上这个可以把数据变回普通的表格格式

运行这段代码后,你就能得到和示例里一样的处理结果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:18:57