You need to enable JavaScript to run this app. 基于分组配对与同日期双条件为数据集df创建x.total求和列
优惠活动
大模型
产品
解决方案
定价
更多

基于分组配对与同日期双条件为数据集df创建x.total求和列

实现步骤

先按求和规则给原数据的分组做配对映射:A和B归为同一配对组,C和D归为另一配对组;再按「配对组+同一日期」的维度计算组内x的总和,把结果匹配回原表每一行,就能得到符合要求的x.total列。

dplyr 方案(日常分析最常用)

library(dplyr)

df %>%
  # 标记每一行所属的配对组
  mutate(pair_group = case_when(
    group %in% c("A", "B") ~ "AB",
    group %in% c("C", "D") ~ "CD"
  )) %>%
  # 按配对组、日期分组,计算组内x的总和
  group_by(pair_group, date) %>%
  mutate(x.total = sum(x)) %>%
  ungroup() %>%
  # 删除中间生成的辅助分组列
  select(-pair_group)

data.table 方案(适配大数量级场景,运行速度更快)

library(data.table)

setDT(df)
df[, pair_group := fifelse(group %in% c("A", "B"), "AB", "CD")
   ][, x.total := sum(x), by = .(pair_group, date)
     ][, pair_group := NULL]

纯base R 方案(无额外安装包依赖)

# 标记配对组
df$pair_group <- ifelse(df$group %in% c("A", "B"), "AB", "CD")
# 计算各配对组对应日期的x求和值
sum_result <- aggregate(x ~ pair_group + date, df, sum)
colnames(sum_result)[3] <- "x.total"
# 将求和结果匹配回原表
df <- merge(df, sum_result, by = c("pair_group", "date"), all.x = TRUE)
# 删除辅助列
df$pair_group <- NULL

运行代码后得到的结果和预期完全匹配,对应校验值如下:

  • 197302日期下,AB组x求和:0.53 + 0.68 = 1.21,CD组x求和:0.16 + 0.31 = 0.47
  • 197303日期下,AB组x求和:0.60 + 0.71 = 1.31,CD组x求和:0.25 + 0.39 = 0.64
  • 197304日期下,AB组x求和:0.57 + 0.65 = 1.22,CD组x求和:0.22 + 0.36 = 0.58

后续如果调整配对规则,只需要修改pair_group的映射逻辑即可,无需改动后续求和流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 23:24:01