【问题标题】:d3 resummarise nested objectd3 重新总结嵌套对象
【发布时间】:2018-07-25 09:59:44
【问题描述】:

在我的代码中,我冒昧地使用 d3.nest() 函数从数据集中删除重复的行,并附上输出示例。

现在我的 JSON 数组中有唯一的条目,我想对这个数据集执行一些计算,特别是找到每个日期的平均“周期时间”。在这个例子中,理想的输出应该是这样的:

[
  {
    "key": "2012-03",
    "values": [
      {
        "mean": 16,
      }
    ]
  },
  {
    "key": "2012-06",
    "values": [
      {
        "mean": 10,
      }
    ]
  },
  {
    "key": "2012-07",
    "values": [
      {
        "mean": 8,
      }
    ]
  }
]

我在网上尝试了几个例子,但我似乎遗漏了一些明显的东西,有人可以帮忙吗?

var summaryTable = [
  {
    "key": "2012-03",
    "values": [
      {
        "key": "AAA-1",
        "value": {
          "cycletime": 14
        }
      },
      {
        "key": "AAA-2",
        "value": {
          "cycletime": 18
        }
      }
    ]
  },
  {
    "key": "2012-06",
    "values": [
      {
        "key": "AAA-3",
        "value": {
          "cycletime": 8
        }
      },
      {
        "key": "AAA-4",
        "value": {
          "cycletime": 12
        }
      }
    ]
  },
  {
    "key": "2012-07",
    "values": [
      {
        "key": "AAA-5",
        "value": {
          "cycletime": 15
        }
      },
      {
        "key": "AAA-5",
        "value": {
          "cycletime": 1
        }
      },
      {
        "key": "AAA-6",
        "value": {
          "cycletime": 8
        }
      }
    ]
  }
]

var d3Table = d3.nest()
    .key(function(d) { return d['key']; })
    .rollup(function(d) { 
        return {
                "medianCycleTime": d3.mean(d, d3.values(d['values']['value'])),
        };
    })
    .entries(summaryTable);

【问题讨论】:

    标签: javascript json d3.js


    【解决方案1】:

    仔细检查您的d3.nest 数据后,我发现rollup 中使用的函数。

    rollup 的参数 d 是一个数组,其中包含具有该键的所有对象。您必须先对其进行索引,否则您将获得 Array 类的 values() 方法。

    var d3Table = d3.nest()
        .key(function(d) { return d['key']; })
        .rollup(function(d) {
            return { 
                "medianCycleTime": d3.mean(d[0]['values'], d => d.value.cycletime ),
            };
        })
        .entries(summaryTable);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2015-09-19
      • 2015-10-17
      • 1970-01-01
      • 2018-11-07
      • 2016-04-20
      • 1970-01-01
      相关资源
      最近更新 更多