不包括“missing"reduce .avg()中的值
excluding "missing" values in reductio.avg()
我希望使用reductio来计算交叉过滤组中的平均值。我的数据集包括在计算平均值时想要排除的缺失值(用null
表示)。但是,我没有看到告诉reductio排除某些值的方法,并且它将null
值视为0。
我编写了一个自定义的reduce函数来完成这个任务,而不使用reductio:
function reduceAvg(attr) {
return {
init: function() {
return {
count: 0,
sum: 0,
avg: 0
};
},
add: function(reduction, record) {
if (record[attr] !== null) {
reduction.count += 1;
reduction.sum += record[attr];
if (reduction.count > 0) {
reduction.avg = reduction.sum / reduction.count;
}
else {
reduction.avg = 0;
}
}
return reduction;
},
remove: function(reduction, record) {
if (record[attr] !== null) {
reduction.count -= 1;
reduction.sum -= record[attr];
if (reduction.count > 0) {
reduction.avg = reduction.sum / reduction.count;
}
else {
reduction.avg = 0;
}
}
return reduction;
}
};
}
是否有一种方法可以使用还原来做到这一点?也许可以使用异常聚合?我还没有完全理解异常是如何在简化中工作的
我认为你应该能够平均'myAttr'排除null和未定义的做法:
reductio()
.filter(function(d) { return d[myAttr] !== null && d[myAttr] !== undefined; })
.avg(function(d) { return d[myAttr]; });
如果没有像预期的那样工作,请提交一个问题,因为这是一个bug。
相关文章:
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- 节点中的Map Reduce
- 对于这种情况,函数Reduce CouchDB
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 解构javascript中的reduce函数
- 关于reduce在javascript中创建过滤器的说明
- 为什么 Array.prototype.reduce() 不接受 Map 对象作为初始值
- 在javascript中使用reduce对数组中的变量求和
- Map/Reduce给我NaN或错误的结果(由于null)
- Undercore reduce,关于备忘录
- Array.prototype.reduce的实际用途是什么
- MongoDB map/reduce,forEach不是一个函数
- 使用map/reduce计算总数
- Javascript作用域规则和mongo-map/reduce函数
- Javascript _.reduce() exercise
- 用函数重写reduce方法
- 有MongoDB的参考吗's map reduce javascript
- 试图了解如何使用_.reduce
- 如果数组中只有一个对象,则Lodash返回错误的reduce结果
- 不包括“missing"reduce .avg()中的值