首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排除reductio.avg()中的“缺失”值

排除reductio.avg()中的“缺失”值
EN

Stack Overflow用户
提问于 2015-09-12 20:53:28
回答 1查看 211关注 0票数 0

我希望使用约简来计算交叉过滤器组内的平均值。我的数据集包括丢失的值(用null表示),在计算平均值时我要排除这些值。但是,我看不出有一种方法可以告诉reductio排除某些值,而且它将null值视为0。

我编写了一个自定义的约简函数来完成这一任务,而不使用还原:

代码语言:javascript
复制
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;
        }
    };
}

有没有办法用还原术来做这件事?也许使用异常聚合?我还没有完全意识到异常在还原术中是如何工作的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-13 00:22:46

我认为您应该能够通过执行以下操作来平均超过“myAttr”(不包括null和未定义):

代码语言:javascript
复制
reductio()
  .filter(function(d) { return d[myAttr] !== null && d[myAttr] !== undefined; })
  .avg(function(d) { return d[myAttr]; });

如果不像预期的那样工作,请提交一个问题,因为它是一个错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32543604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档