Summarizer API

Aggregation functions that given a collection of items produce a single value.

deviation#

Computes the standard deviation as per d3-array::deviation.

Parameters#

key#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
stdev: deviation('value'),
})
// output:
[{ stdev: 2.449 }]

first#

Returns the value for the specified key from first item in the collection.

Parameters#

key#

| string /* key of object */
| (item: object) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
str: first('str'),
value: sum('value'),
})
// output:
[{ str: 'foo', value: 15 }]

last#

Returns the value for the specified key from last item in the collection.

Parameters#

key#

| string /* key of object */
| (item: object) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
str: last('str'),
value: sum('value'),
})
// output:
[{ str: 'bar', value: 15 }]

max#

Computes the max value as per d3-array::max.

Parameters#

key#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
value: max('value'),
})
// output:
[{ value: 7 }]

mean#

Computes the mean value as per d3-array::mean, using d3-array::fsum to reduce floating point errors.

Parameters#

key#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
value: mean('value'),
})
// output:
[{ value: 3 }]

meanRate#

Computes the mean for fractional values by summing over the numerator and denominator individually first before dividing.

Parameters#

numerator#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the numerator over or an accessor function that maps a given item to the numerator value to compute over.

denominator#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the denominator over or an accessor function that maps a given item to the denominator value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3, value2: 4 },
{ str: 'foo', value: 0, value2: 0 },
{ str: 'bar', value: 0, value2: 3 },
{ str: 'bar', value: 1, value2: 2 },
{ str: 'bar', value: 7, value2: 10 },
];
tidy(data, summarize({
meanValue: meanRate('value', 'value2'),
}))
// output:
[{ meanValue: 11 / 19 }]

median#

Computes the median value as per d3-array::median.

Parameters#

key#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
value: median('value'),
})
// output:
[{ value: 3 }]

min#

Computes the min value as per d3-array::min.

Parameters#

key#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
value: min('value'),
})
// output:
[{ value: 1 }]

n#

Computes the number of items in the collection.

Parameters#

options?#

{
predicate?: (item: object, index: number, items: object[]) => boolean
}
  • predicate: When provided, only count items that return true when passed to this function.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
count: n(),
countFoo: n({ predicate: d => d.str === 'foo' })
})
// output:
[{ count: 5, countFoo: 2 }]

nDistinct#

Computes the number of distinct values for a key in the collection.

Parameters#

key#

| string /* key of object */
| (item: object, index: number, array: object[]) => any

The key or function to compute the distinct values over.

options#

{
includeNull?: boolean = true
includeUndefined?: boolean = false
}
  • includeNull = true whether or not to count null as a distinct value
  • includeUndefined = false whether or not to count undefined as a distinct value

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
{ str: 'bar', value: undefined },
];
tidy(data, summarize({
numStr: nDistinct('str'),
})
// output:
[{ numStr: 2 }]
tidy(data, summarize({
numValue: nDistinct(d => d.value),
})
// output:
[{ numValue: 3 }]
tidy(data, summarize({
numValue: nDistinct(d => d.value, { includeUndefined: true }),
})
// output:
[{ numValue: 4 }]

sum#

Computes the sum as per d3-array::fsum.

Parameters#

key#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

options?#

{
predicate?: (item: object, index: number, items: object[]) => boolean
}
  • predicate: When provided, only sum items that return true when passed to this function.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
value: sum('value'),
valueFoo: sum('value', { predicate: d => d.str === 'foo' })
})
// output:
[{ value: 15, valueFoo: 4 }]

variance#

Computes the variance as per d3-array::variance.

Parameters#

key#

| string /* key of object */
| (item: object, index: number, array: object[]) => number

Either the key to compute the value over or an accessor function that maps a given item to the value to compute over.

Usage#

const data = [
{ str: 'foo', value: 3 },
{ str: 'foo', value: 1 },
{ str: 'bar', value: 3 },
{ str: 'bar', value: 1 },
{ str: 'bar', value: 7 },
];
tidy(data, summarize({
value: variance('value'),
})
// output:
[{ value: 6 }]

Last updated on by Peter Beshai