Public
Edited
Sep 29, 2023
Insert cell
Insert cell
Insert cell
originalData = FileAttachment("official_core_inflation_price_index_monthly@1.csv").csv()
Insert cell
originalData.columns
Insert cell
countryColumn = "Country"
Insert cell
timeColumns = originalData.columns.slice(6, originalData.columns.length-5)
Insert cell
timeColumns.slice(timeColumns.length-10)
Insert cell
countries = [...new Set(d3.map(originalData, d => d[countryColumn]))]
Insert cell
// https://github.com/d3/d3-time-format
parseTime = d3.timeParse("%Y%m")
Insert cell
[parseTime("201301"), parseTime("202204")]
Insert cell
dates = d3.map(timeColumns, parseTime)
Insert cell
dates.slice(dates.length - 10)
Insert cell
countriesOfInterestedDefault = ["Australia",
// "Brazil",
"Canada", "Chile", "China, P.R.: Mainland", "France", "Germany",
// "India",
"Japan", "Korea", "New Zealand", "Norway", "Sweden", "United Kingdom", "United States"]
Insert cell
data = d3.map(originalData, row => d3.map(timeColumns, dateCol => ({"Country": row[countryColumn], "Date": dateCol, "CI": row[dateCol]})))
.flat().filter(d => d.Country !== "" && d.CI !== "")
.map(({Country, Date, CI}) => ({Country, Date: parseTime(Date), CI: +CI}))
.filter(d => countriesOfInterested.includes(d.Country))
.filter(d => d.Date >= startDate)
Insert cell
usaData = d3.filter(data, d => d.Country == "United States")
Insert cell
usaData.slice(usaData.length-5)
Insert cell
Insert cell
viewof countriesOfInterested = Inputs.checkbox(countries, {label: "Select countries", value: countriesOfInterestedDefault})
Insert cell
Insert cell
Insert cell
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