dc.js 中的失败百分比
Percentage of failures in dc.js
如何计算失败百分比,即计算失败 occurred/total 的地方??
Customer | Year| Week |Failure | name | Type | Count
___________________________________________________________________________
A 2018 29 N Express Air PASSENGER 27
___________________________________________________________________________
A 2018 26 N Express Air PASSENGER 58
___________________________________________________________________________
A 2018 26 Delay hours Express Air 5
___________________________________________________________________________
A 2018 27 N Express Air HIGH SPEED 29
___________________________________________________________________________
A 2018 30 Maintenance missed Express Air PASSENGER 11
___________________________________________________________________________
A 2018 32 N Express Air PASSENGER 53
___________________________________________________________________________
A 2018 25 N Express Air 2
___________________________________________________________________________
A 2018 33 N Express Air HIGH SPEED 3
____________________________________________________________________________
A 2018 31 Bogey Missing Express Air PASSENGER 1
这是我使用 dc.js 和 crossfilter
创建的数据表
var ndx= crossfilter(data);
var all= ndx.groupAll();
var countType = ndx.dimension(function (d) { return d["count"]; });
dataTable.width(800).height(800)
.dimension(countType)
.group(function(d) { return "" })
.size(100)
.columns([
function(d) { return d.alias; },
function(d) { return d.y; },
function(d) { return d.w; },
function(d) { return d.failure_reason; },
function(d) { return d.name; },
function(d) { return d.train_type; },
function(d) { return d.count; }
])
.sortBy(function(d){ return d.count; })
// (optional) sort order, :default ascending
.order(d3.descending);
编辑:只是小改动,总和有效
var total = countType.groupAll().reduceSum(function(d) {return
d["count"];})
dc.numberDisplay("#total")
.valueAccessor(function(d){return d})
.group(total);
用于计算未发生故障的百分比 (N)
在这里我可以计算 failure_type 在哪里 'N' ,如何计算除 N
之外的所有其他类型的失败百分比
var failureGroup= failureType.group().reduceSum(function(d) {return
d.count;});
var failureType = ndx.dimension(function(d) { return
d["failure_reason"]; });
function choose_bin(group, key) {
return {
value: function() {
return group.all().filter(kv => kv.key === key)[0].value;
}
}
}
var allCount = failureType.groupAll().reduceSum(d => d.count);
var nofailure = choose_bin(failureGroup, 'N');
dc.numberDisplay("#total1")
.group(nofailure)
.valueAccessor(x => (x / allCount.value())*100);
我想你可能会像你展示的那样使用组和容器,但再次使用 groupAll
会更简单一些:
var allCount = failureType.groupAll().reduceSum(d => d.count);
var nofailure = failureType.groupAll()
.reduceSum(d => d.failure_reason === 'N' ? d.count : 0);
dc.numberDisplay("#total1")
.group(nofailure)
.valueAccessor(x => (x / allCount.value())*100);
如何计算失败百分比,即计算失败 occurred/total 的地方??
Customer | Year| Week |Failure | name | Type | Count
___________________________________________________________________________
A 2018 29 N Express Air PASSENGER 27
___________________________________________________________________________
A 2018 26 N Express Air PASSENGER 58
___________________________________________________________________________
A 2018 26 Delay hours Express Air 5
___________________________________________________________________________
A 2018 27 N Express Air HIGH SPEED 29
___________________________________________________________________________
A 2018 30 Maintenance missed Express Air PASSENGER 11
___________________________________________________________________________
A 2018 32 N Express Air PASSENGER 53
___________________________________________________________________________
A 2018 25 N Express Air 2
___________________________________________________________________________
A 2018 33 N Express Air HIGH SPEED 3
____________________________________________________________________________
A 2018 31 Bogey Missing Express Air PASSENGER 1
这是我使用 dc.js 和 crossfilter
创建的数据表 var ndx= crossfilter(data);
var all= ndx.groupAll();
var countType = ndx.dimension(function (d) { return d["count"]; });
dataTable.width(800).height(800)
.dimension(countType)
.group(function(d) { return "" })
.size(100)
.columns([
function(d) { return d.alias; },
function(d) { return d.y; },
function(d) { return d.w; },
function(d) { return d.failure_reason; },
function(d) { return d.name; },
function(d) { return d.train_type; },
function(d) { return d.count; }
])
.sortBy(function(d){ return d.count; })
// (optional) sort order, :default ascending
.order(d3.descending);
编辑:只是小改动,总和有效
var total = countType.groupAll().reduceSum(function(d) {return
d["count"];})
dc.numberDisplay("#total")
.valueAccessor(function(d){return d})
.group(total);
用于计算未发生故障的百分比 (N) 在这里我可以计算 failure_type 在哪里 'N' ,如何计算除 N
之外的所有其他类型的失败百分比 var failureGroup= failureType.group().reduceSum(function(d) {return
d.count;});
var failureType = ndx.dimension(function(d) { return
d["failure_reason"]; });
function choose_bin(group, key) {
return {
value: function() {
return group.all().filter(kv => kv.key === key)[0].value;
}
}
}
var allCount = failureType.groupAll().reduceSum(d => d.count);
var nofailure = choose_bin(failureGroup, 'N');
dc.numberDisplay("#total1")
.group(nofailure)
.valueAccessor(x => (x / allCount.value())*100);
我想你可能会像你展示的那样使用组和容器,但再次使用 groupAll
会更简单一些:
var allCount = failureType.groupAll().reduceSum(d => d.count);
var nofailure = failureType.groupAll()
.reduceSum(d => d.failure_reason === 'N' ? d.count : 0);
dc.numberDisplay("#total1")
.group(nofailure)
.valueAccessor(x => (x / allCount.value())*100);