Published
Edited
May 16, 2020
5 stars
Insert cell
Insert cell
Insert cell
parseTime = d3.timeParse('%Y/%-m/%-d %-H:%M')
Insert cell
data = d3.csvParse(csvString, row => {
row.DateTime = parseTime(row.DateTime);
return row;
})
Insert cell
columnsToSum = data.columns.slice(1)
Insert cell
byDay = d3.rollup(data,
v => Object.fromEntries(columnsToSum.map(col => [col, d3.sum(v, d => +d[col])])),
d => d3.timeDay(d.DateTime).getTime())
Insert cell
final = Array.from(byDay, ([timestamp, counts]) => {
const result = {...counts};
result.DateTime = new Date(timestamp);
return result;
}).sort((a, b) => d3.ascending(a.DateTime, b.DateTime))
Insert cell
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