繁体   English   中英

d3恢复嵌套对象

[英]d3 resummarise nested object

在我的代码中,我自由地使用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);

在仔细检查了您的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM