summary = d3.rollup(
weather,
(group) => new Object({
RouteKey: group[0].RouteKey,
CountryNum: group[0].CountryNum,
StateNum: group[0].StateNum,
Route: group[0].Route,
YearCount: d3.count(new Set(group.map(e => e["Year"])).keys()),
ObsNCount: d3.count(new Set(group.map(e => e["ObsN"])).keys()),
...SumStats(group, "TotalSpp"),
...SumStats(group, "DayOfYear"),
...SumStats(group, "StartTimeM"),
...SumStats(group, "EndTimeM"),
...SumStats(group, "StartSky"),
...SumStats(group, "EndSky"),
...SumStats(group, "StartWind"),
...SumStats(group, "EndWind"),
...SumStats(group, "StartTempF"),
...SumStats(group, "EndTempF"),
}),
(record) => record.RouteKey
);