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

在多组domain中用dplyr实现group5减去group1的freq值并保留原数据框

解决方案:用dplyr实现指定组的数值调整

完整代码实现

library(dplyr)

# 生成示例数据(与提问中的结构一致)
set.seed(123456)
domain <- as.factor(rep(c('alpha', 'bravo', 'charlie', 'delta', 'echo', 
                          'foxtrot', 'golf', 'hotel', 'india', 'juliet'), 
                        each = 8))
group <- as.factor(rep(c('group 1', 'group 2', 'group 3', 'group 4', 'group 5', 
                         'group 6', 'group 7', 'group 8'), 10))
freq <- signif(rnorm(80, mean = 1750, sd = 500), 1)
df <- data.frame(domain, group, freq)

# 核心处理逻辑
df_processed <- df %>%
  group_by(domain) %>%
  mutate(
    freq = case_when(
      group == 'group 5' ~ freq - freq[group == 'group 1'],
      TRUE ~ freq
    )
  ) %>%
  ungroup()

# 查看目标结果示例
df_processed %>% filter(domain %in% c('alpha', 'bravo', 'charlie'))

代码说明

  • 分组处理:通过group_by(domain)确保每个domain内的计算独立,不会跨domain产生干扰
  • 条件修改:用case_when()精准定位需要调整的行(group为'group 5'的记录),将其freq值替换为「当前group5的freq - 同domain下group1的freq」
  • 取消分组:ungroup()还原数据框的非分组状态,避免影响后续的数据操作

结果验证

运行代码后,目标调整效果符合预期:

  • alpha的group5 freq从3000变为1000(3000-2000)
  • bravo的group5 freq从2000变为0(2000-2000)
  • charlie的group5 freq从1000变为0(1000-1000)

代码可自动适配所有domain,无需手动逐个处理,满足自动化复用需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:20:41