Published
Edited
Dec 9, 2020
1 fork
1 star
Insert cell
Insert cell
hospitals = FileAttachment("hospitals-maplarge.csv").csv()
Insert cell
Insert cell
hospitalsByPK = new Map(hospitals.map(d => [d.hospital_pk, d]))
Insert cell
Insert cell
hhs = FileAttachment(
"slimmed-reported_hospital_capacity_admissions_facility-level_weekly_average_timeseries_20201207.csv"
).csv()
Insert cell
hhs.filter(d => d.hospital_pk == "010108")
Insert cell
// how many events per hospital (seems 18)
d3.rollup(hhs, v => v.length, d => d.hospital_pk)
Insert cell
// how many events per county
d3.rollup(hhs, v => v.length, d => hospitalsByPK.get(d.hospital_pk).fips_code)
Insert cell
d3 = require("d3@6")
Insert cell
Insert cell
/*
mkdir data
curl https://healthdata.gov/sites/default/files/reported_hospital_capacity_admissions_facility-level_weekly_average_timeseries_20201207.csv > data/reported_hospital_capacity_admissions_facility-level_weekly_average_timeseries_20201207.csv
npm install d3
node slim.js
*/

/*
let fs = require("fs")
let d3 = require("d3")

let dir = "data/"
let filename = "reported_hospital_capacity_admissions_facility-level_weekly_average_timeseries_20201207.csv"
let txt = fs.readFileSync(dir + filename).toString().slice(1) // weird character at begin of file
let data = d3.csvParse(txt)

let todelete = "hospital_name,address,city,state,zip,fips_code,hospital_subtype,ccn,is_metro_micro".split(",")
Object.keys(data[0]).forEach(key => {
if(key.indexOf("previous_day") >= 0) {
todelete += "," + key
}
})
todelete = todelete.split(",")
console.log("todelete", todelete)

let slimmed = data
.filter(d => !!d.address)
// .filter(d => !!d.fips_code)
.map(function(d) {
let obj = {...d}
Object.keys(obj).forEach(key => {
let v = obj[key]
if(v == "-999999" || v == "-999999.0") obj[key] = ""
})

// we can look up all these fields in the hospitals geocoded map
todelete.forEach(del => {
delete obj[del]
})
return obj
})

console.log("writing slimmed full file")
fs.writeFileSync(dir + "slimmed-" + filename, d3.csvFormat(slimmed))

// // let byStateFips = d3.rollup(data, v => v.length, d => d.fips_code.slice(0,2))
let byStateFips = d3.group(data, d => d.fips_code.slice(0,2))

let states = Array.from(byStateFips.keys())

states.forEach(state => {
let d = byStateFips.get(state)
console.log(state, d.length)
fs.writeFileSync(dir + state + "-slimmed-" + filename, d3.csvFormat(d))
})
*/
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