data = {
let data = (await FileAttachment("apportionment.csv").csv())
.map(d => {
const lookup = stateLookup.find(d0 => d0.state_name === d.Name);
const obj = {};
obj.state_name = d.Name;
obj.state_abbr = lookup ? lookup.state_postal : "";
obj.pop = +keepNumber(d["Resident Population"]);
obj.year = +d.Year;
return obj;
})
.filter(d => d.state_abbr);
const data2020 = (await FileAttachment("census-data.json").json()).states
.filter(d => d.year === 2020)
.map(d => {
const obj = {};
obj.state_name = d.geo_name;
obj.state_abbr = d.stab;
obj.pop = d.population;
obj.year = d.year;
return obj;
});
data = [...data, ...data2020];
const out = [];
const years = d3.groups(data, d => d.year);
years.forEach(([year, entries]) => {
entries.sort((a, b) => d3.descending(a.pop, b.pop)).forEach((d, i) => {
d.rank = i + 1;
out.push(d);
});
});
return out.filter(d => d.year >= startYear);
}