by_state = by_year
.join(aq.fromCSV(states), null, [aq.all(), ['latitude', 'longitude']])
.derive({ order: ({ latitude, longitude }) => Math.sin(90) * longitude + Math.cos(90) * latitude })
.orderby('year', 'order')
.reify()
.groupby('year')
.pivot('state', 'value', { sort: false })
.join(aq.fromCSV(candidates), null, [aq.all(), ['democrats', 'republicans', 'winner']])