function wrangleF(data, disableAggr) {
return Object.keys(data[0]).map((k) => {
const grouped = group(data)
.by((d) => d[k])
.run()
.map((d) => {
const keys = Object.keys(data[0]);
if (disableAggr) {
return d;
}
let aggr = new Map(
Object.keys(data[0]).map((k) => [
k,
{
min: d3.min(d.values, (v) => v[k]),
max: d3.max(d.values, (v) => v[k]),
mean: d3.mean(d.values, (v) => v[k]),
count: d.values.length,
sum: d3.sum(d.values, (v) => v[k]),
median: d3.median(d.values, (v) => v[k]),
cumsum: d3.cumsum(d.values, (v) => v[k]),
deviation: d3.deviation(d.values, (v) => v[k])
}
])
);
return Object.assign(d, {
aggr: aggr
});
});
if (disableAggr) {
return {
key: k,
group: grouped
};
}
const aggr = {
min: d3.min(data, (v) => v[k]),
max: d3.max(data, (v) => v[k]),
mean: d3.mean(data, (v) => v[k]),
distinctCount: grouped.length,
sum: d3.sum(data, (v) => v[k]),
median: d3.median(data, (v) => v[k]),
cumsum: d3.cumsum(data, (v) => v[k]),
deviation: d3.deviation(data, (v) => v[k])
};
return {
key: k,
group: grouped,
aggr
};
});
}