gpt4 book ai didi

javascript - crossfilter 中的 reduceAdd、reduceSum、reduceRemove 函数是什么?它们应该如何使用?

转载 作者:IT王子 更新时间:2023-10-29 03:18:45 25 4
gpt4 key购买 nike

谁能用简单的术语解释一下带有参数 reduceAddreduceSumreduceRemove 的 reduce 函数如何在 crossfilter 中工作>?

最佳答案

请记住,map reduce 通过特定维度的键来减少数据集。例如,让我们使用带有记录的交叉过滤器实例:

[
{ name: "Gates", age: 57, worth: 72000000000, gender: "m" },
{ name: "Buffet", age: 59, worth: 58000000000, gender: "m" },
{ name: "Winfrey", age: 83, worth: 2900000000, gender: "f" },
{ name: "Bloomberg", age: 71, worth: 31000000000, gender: "m" },
{ name: "Walton", age: 64, worth: 33000000000, gender: "f" },
]

和维度名称、年龄、身价和性别。我们将使用 reduce 方法减少性别维度。

首先我们定义了 reduceAdd、reduceRemove 和 reduceInitial 回调方法。

reduceInitial 返回一个具有简化对象形式和初始值的对象。它不需要任何参数。

function reduceInitial() {
return {
worth: 0,
count: 0
};
}

reduceAdd 定义当记录被“过滤”到特定键的缩减对象时会发生什么。第一个参数是简化对象的 transient 实例。第二个对象是当前记录。该方法将返回增强的 transient 简化对象。

function reduceAdd(p, v) {
p.worth = p.worth + v.worth;
p.count = p.count + 1;
return p;
}

reduceRemovereduceAdd 相反(至少在这个例子中)。它采用与 reduceAdd 相同的参数。这是必需的,因为组减少会随着记录被过滤而更新,有时需要从先前计算的组减少中删除记录。

function reduceRemove(p, v) {
p.worth = p.worth - v.worth;
p.count = p.count - 1;
return p;
}

调用 reduce 方法如下所示:

mycf.dimensions.gender.reduce(reduceAdd, reduceRemove, reduceInitial)

要查看减少的值,请使用 all 方法。要查看前 n 个值,请使用 top(n) 方法。

mycf.dimensions.gender.reduce(reduceAdd, reduceRemove, reduceInitial).all()

返回的数组将(应该)看起来像:

[
{ key: "m", value: { worth: 161000000000, count: 3 } },
{ key: "f", value: { worth: 35000000000, count: 2 } },
]

缩减数据集的目标是派生一个新的数据集,方法是首先按公共(public)键对记录进行分组,然后将这些分组的维度缩减为每个键的单个值。在这种情况下,我们按性别分组,并通过添加共享相同键的记录的值来减少该分组的值(value)维度。

其他 reduceX 方法是 reduce 方法的便捷方法。

对于此示例,reduceSum 将是最合适的替代品。

mycf.dimensions.gender.reduceSum(function(d) {
return d.worth;
});

在返回的分组上调用 all 将(应该)如下所示:

[
{ key: "m", value: 161000000000 },
{ key: "f", value: 35000000000 },
]

reduceCount 会统计记录

mycf.dimensions.gender.reduceCount();

在返回的分组上调用 all 将(应该)如下所示:

[
{ key: "m", value: 3 },
{ key: "f", value: 2 },
]

希望这有帮助:)

来源:https://github.com/square/crossfilter/wiki/API-Reference

关于javascript - crossfilter 中的 reduceAdd、reduceSum、reduceRemove 函数是什么?它们应该如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com