duration_by_year = {
const grouped = new Map();
for (const row of data) {
const year = +row.year;
const duration = +row.duration_ms;
if (!isNaN(year) && !isNaN(duration) && duration > 0) {
if (!grouped.has(year)) grouped.set(year, []);
grouped.get(year).push(duration);
}
}
return Array.from(grouped, ([year, durations]) => {
if (durations.length === 0) return null;
const avg = durations.reduce((a, b) => a + b) / durations.length;
return {
year,
avg_duration_min: avg / 60000
};
}).filter(d => d !== null);
}