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

如何按date1、car分组计算side A与B对应的measure绝对差值

实现方案

以下两种方案均可满足需求,均基于tidyverse生态实现:

方案1:宽表转换法(可读性更高,适合需要同时保留A、B侧原始值的场景)

# 加载依赖包
library(dplyr)
library(tidyr)

result <- test %>%
  # 将side字段的A、B转为单独列,列值为对应measure
  pivot_wider(names_from = side, values_from = measure) %>%
  # 计算绝对差值
  mutate(abs.difference.side = abs(A - B)) %>%
  # 筛选出需要的输出字段
  select(date1, car, abs.difference.side)

方案2:分组直接计算法(无需转表,运行效率更高,适合大数据量场景)

该方案默认每个date1+car的分组下,side为A、B的记录各仅有1条,符合你给出的业务场景特征:

library(dplyr)

result <- test %>%
  # 按日期、车辆分组
  group_by(date1, car) %>%
  # 直接提取分组内A、B侧的measure计算差值,.groups = "drop"用于汇总后自动取消分组
  summarise(abs.difference.side = abs(measure[side == "A"] - measure[side == "B"]), .groups = "drop")

注意事项

如果实际数据中存在某date1+car分组下缺失A或B侧记录的情况,计算结果会返回NA,你可以根据业务需要在代码中增加filter步骤提前过滤掉不完整的分组。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:15:04