Published
Edited
Apr 16, 2020
Insert cell
md`# ClassifyData`
Insert cell
data=[{a:'alpha2',b:'beta1',c:'gamma',d:-12,e:10},
{a:'alpha2',b:'beta4',c:'gamma',d:4,e:10},
{a:'alpha',b:'beta',c:'gamma',d:-12,e:10},
{a:'alpha',b:'beta',c:'gamma',d:-5,e:10},
{a:'alpha2',b:'beta4',c:'gamma',d:-12,e:10},
{a:'alpha',b:'beta4',c:'gamma',d:12,e:10}]
Insert cell
ClassifyData(data,['a','b','c'],['d','e'])
Insert cell
ClassifyData = (data, X, Y) => {
if (data.length <= 0 || X.length <= 0 || Y.length <= 0) {
return data
}
return data.reduce((result, row) => {
const found = result.find(p => X.every(col => p[col] === row[col]))

if (found !== undefined && found !== {}) {
Y.map(col => {
console.log('count', found.count,found)
found[col] =
(((found.count - 1) *
parseFloat(found[col])/
found.count) + (parseFloat(row[col]) /
found.count))
return null
})
found.count = parseFloat(found.count) + 1
} else {
result.push({ ...row, count: 2 })
}
return result
}, [])
}
Insert cell
d3 = require("d3@5")
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