[英]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.