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

如何在Vega中基于指定列值计算分组的y相对变化?

Vega数据转换:按分组计算指定x值的y相对变化

原始数据集

c x y
a 5 10
a 6 12
a 7 14
a 8 16
b 5 20
b 6 22
b 7 24
b 8 26

需求说明

针对c字段的分组(a、b两组),计算每个数据行的y值相对于本组内x=6时y值的变化量newY:

  • a组基准值为x=6时的y=12,所有行newY = y - 12
  • b组基准值为x=6时的y=22,所有行newY = y - 22

实现方案

通过Vega的数据转换组合完成需求,分两步配置transform:

1. 生成各组基准值数据集

先从原始数据中提取每组x=6对应的基准y值,存储为独立数据集:

{
  "name": "groupBaseY",
  "source": "yourOriginalDataName", // 替换为你的原始数据名称
  "transform": [
    // 筛选x=6的行
    {"filter": "datum.x === 6"},
    // 按c分组,提取每组的y值作为基准
    {"aggregate": [{"op": "first", "field": "y", "as": "baseY"}], "groupby": ["c"]}
  ]
}

这一步会得到如下中间数据集:

c  baseY
a  12
b  22

2. 关联基准值并计算newY

将原始数据与基准数据集关联,计算相对变化量:

{
  "name": "finalData",
  "source": "yourOriginalDataName",
  "transform": [
    // 通过c字段关联基准数据集,给每行添加baseY字段
    {"lookup": "c", "from": {"data": "groupBaseY", "key": "c", "fields": ["baseY"]}},
    // 计算newY = 当前y值 - 本组基准y值
    {"calculate": "datum.y - datum.baseY", "as": "newY"}
  ]
}

最终输出结果

c x y  newY
a 5 10 -2
a 6 12 0
a 7 14 2
a 8 16 4
b 5 20 -2
b 6 22 0
b 7 24 2
b 8 26 4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:27:45