Published
Edited
Sep 13, 2020
5 stars
Insert cell
Insert cell
Insert cell
expenses = [
{ name: "jim", amount: 34, date: "11/12/2015" },
{ name: "carl", amount: 120.11, date: "11/12/2015" },
{ name: "jim", amount: 45, date: "12/01/2015" },
{ name: "stacy", amount: 12.00, date: "01/04/2016" },
{ name: "stacy", amount: 34.10, date: "01/04/2016" },
{ name: "stacy", amount: 44.80, date: "01/05/2016" }
]
Insert cell
Insert cell
expensesByName = d3.group(expenses, d => d.name)
Insert cell
Insert cell
Insert cell
Insert cell
expensesCount = d3.rollup(
expenses,
v => v.length, // aggregate the data by counting the number of items
d => d.name // group by name
)
Insert cell
Insert cell
expensesAvgAmount = d3.rollup(
expenses,
v => d3.mean(v, d => d.amount), // aggregate by the mean of amount
d => d.name // group by name
)
Insert cell
Insert cell
expenseMetrics = d3.rollup(
expenses,
v => ({
count: v.length,
total: d3.sum(v, d => d.amount),
avg: d3.mean(v, d => d.amount)
}),
d => d.name
)
Insert cell
Insert cell
expensesTotal = d3.rollups(
expenses,
v => ({
count: v.length,
total: d3.sum(v, d => d.amount),
avg: d3.mean(v, d => d.amount)
}),
d => d.name
)
Insert cell
Insert cell
expensesTotalByName = d3.rollup(
expenses,
v => d3.sum(v, d => d.amount), //Aggregate by the sum of amount
d => d.name, // group first by name
d => d.date // then by date
)
Insert cell
Insert cell
expensesTotalByDay = d3.rollup(
expenses,
v => d3.sum(v, d => d.amount), //Aggregate by the sum of amount
d => d.date, // now first by date
d => d.name // then by name
)
Insert cell
Insert cell
expensesByYear = d3.rollup(
expenses,
v => d3.sum(v, d => d.amount),
d => d.date.split("/")[2]
)
Insert cell
Insert cell
d3 = require('d3@6')
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more