我有一个大型JSON文件,其值与此示例类似:
[
{"date": "12/27/2012", "temp": 23, "pH": ".4"},
{"date": "12/27/2012", "temp": 23, "pH": ".7"},
{"date": "12/27/2012", "temp": 23, "pH": ".2"},
{"date": "12/27/2012", "temp": 23}
]
有些情况下pH值不存在。我需要在页面上跟踪“temp”和“pH”的实例数。使用JavaScript循环执行此操作时没有问题,但我也想知道是否可以使用crossfilter执行此操作。
基本上,是否有类似于groupAll()。reduceCount()。value()的东西,它只计算字符串的各个实例?
这是d3.json()块中的代码示例:
var tempDim = xFilter.dimension(function(d) {return d.temp;});
var tempGroup = tempDim.group().reduceCount(function(d) {return d.temp;});
var tempCount = tempDim.groupAll().reduceCount().value();
console.log("tempCount :"+tempCount); // 4
var tempSum = tempDim.groupAll().reduceSum(function(d) {return d.temp;}).value();
console.log("tempSum :"+tempSum); // 92
//pH
var phDim = xFilter.dimension(function(d) {return d.pH;});
var phGroup = phDim.group().reduceCount(function(d) {return d.pH;});
var pHCount = phDim.groupAll().reduceCount().value();
console.log("pHCount :"+pHCount); // Equal to 4, looking for 3
答案 0 :(得分:1)
赢得了这个不同的临时和phs的数量?
var tempDim = xFilter.dimension(function(d) {return d.temp;});
var tempGroup = tempDim.group();
console.log(tempGroup.top(Infinity).length);
var phDim = xFilter.dimension(function(d) {return d.pH;});
var phGroup = phDim.group()
console.log(phGroup.top(Infinity).length);
答案 1 :(得分:0)
或者,如果您需要计算值的数量,无论它们是否不同,您可以使用自定义缩减功能,例如:
tempDim.groupAll().reduce(
function(p,v) { return (v.temp !== undefined) ? p+1 : 0; },
function(p,v) { return (v.temp !== undefined) ? p-1 : 0; },
function() { return 0; })\
然后您可以使用reusable reduce function pattern进行概括。