languageGroups = {
const allResults = d3.merge(languageFlatRaw
.filter(d => d.language != null)
.map(d => {
const languages = Array.from(new Set(d.language.split(';').map(e => e.trim())))
return languages.map(e => ({type: d.type, year: d.year, value: d.value, language: e}))
}))
const groupedByLanguage = d3.rollups(allResults, values => {
const wantValues = d3.rollups(values.filter(d => d.type == 'want'),
v => d3.sum(v, f => f.value) / normalizeLookup.get(v[0].year),
d => d.year);
const doValues = d3.rollup(values.filter(d => d.type == 'do'),
v => d3.sum(v, f => f.value) / normalizeLookup.get(v[0].year),
d => d.year);
return wantValues.map(d => ({
language: values[0].language,
year: d[0],
want_value: d[1],
do_value: doValues.get(d[0])
}))
}, d => d.language)
return groupedByLanguage.filter(d => d[1].length >= 6).filter(d => d[0] != 'NA')
}