Public
Edited
Jun 5, 2023
1 fork
Insert cell
Insert cell
library = import("https://cdn.skypack.dev/us-abbreviations@latest")
Insert cell
convertStatesToPostStyle = library.default('full', 'post')
Insert cell
toTitleCase = (str) => {
return str.replace(
/\w\S*/g,
function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
}
);
}
Insert cell
Insert cell
countypres_2000-2020@2.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
Insert cell
grouped_data = { data.map(d => {
d.id = d.year + "-" + d.state + "-" + d.county_name
return d
})

const grouped = d3.groups(data, d => d.id)

const newArray = []
grouped.map( d => {
newArray.push( d[1].reduce((prev, current) => (prev.candidatevotes > current.candidatevotes) ? prev : current))
})
return newArray
}
Insert cell
main = grouped_data.map(d => ({
...d,
america_check: d.year===2000 && d.party==="REPUBLICAN" ? true:
d.year === 2004 && d.party==="REPUBLICAN" ? true:
d.year === 2008 && d.party==="DEMOCRAT" ? true:
d.year===2012 && d.party==="DEMOCRAT" ? true:
d.year === 2016 && d.party==="REPUBLICAN" ? true:
d.year === 2020 && d.party==="DEMOCRAT" ? true:
false,
america_winner: d.year===2000? "GEORGE W. BUSH" :
d.year===2004? "GEORGE W. BUSH":
d.year===2008? "BARACK OBAMA":
d.year===2012? "BARACK OBAMA":
d.year===2016? "DONALD TRUMP":
d.year===2020? "JOSEPH R BIDEN JR":
false,
america_party: d.year===2000? "REPUBLICAN" :
d.year===2004? "REPUBLICAN":
d.year===2008? "DEMOCRAT":
d.year===2012? "DEMOCRAT":
d.year===2016? "REPUBLICAN":
d.year===2020? "DEMOCRAT":
''
})).map(({office, candidatevotes, version, mode, totalvotes, ...d}) => d);
Insert cell
test = main.filter(d=>d.state === "DISTRICT OF COLUMBIA")
Insert cell
Insert cell
counties = main.filter(d => d.year === 2016).map((datum) => {
if(datum.county_name.includes("DISTRICT OF COLUMBIA")){
return {'label': 'Washington, D.C.',
'value': datum.county_fips,
'fullName': 'Washington, District of Columbia'
}} else if (datum.county_name.endsWith('CITY')){
return {
'label':toTitleCase(datum.county_name) + ', ' + convertStatesToPostStyle(toTitleCase(datum.state)),
'value':datum.county_fips,
'fullName': datum.county_name + ' County, '+ convertStatesToPostStyle(toTitleCase(datum.state))+ ', ' +datum.state
}
}else {
return {
'label':toTitleCase(datum.county_name) + ' County' + ', ' + convertStatesToPostStyle(toTitleCase(datum.state)),
'value':datum.county_fips,
'fullName': datum.county_name + ' County, '+ convertStatesToPostStyle(toTitleCase(datum.state))+ ', ' +datum.state
}}
});
Insert cell
test1 = counties.filter(d=>d.label.includes("Kansas"))
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