Skip to main content

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 }]