Я хочу объединить данные, которые я читаю как CSV. Я пробовал d3.nest, и он работает, но это не то, что я ищу, поскольку он преобразует данные в структуру JSON. Для меня важно сохранить интерфейс CSV неповрежденным, чтобы мои диаграммы многократного использования работали независимо от того, использую ли я необработанные или агрегированные данные CSV. Я думаю, было бы здорово, если бы можно было использовать сокращение карты для агрегации.d3.js Объединение данных CSV
, например, преобразовать это:
a,b,c
1,1,1
1,2,1
1,3,1
1,4,1
2,1,1
2,2,1
2,3,1
2,4,1
3,1,1
3,2,1
3,3,1
3,4,1
3,5,1
3,6,1
4,1,1
4,2,1
в этом:
a,d
1,4
2,4
3,6
4,2
Я опробовал решение, предложенное Адамом Пирсом, но он не работает, так как он собирает данные в виде строки. Основываясь на идее Адамса, я немного изменил код. Я использовал гнездо для агрегации и карты, чтобы получить структуру данных, которую я хотел. Вот что я придумал в конце концов:
var aggregated = d3.nest()
.key(function(d) {
var ts;
var key = new Date(parseInt(d.ms_since_epoch));
key.setMinutes(0);
key.setSeconds(0);
key.setMilliseconds(0);
return key.getTime();
})
.rollup(function(leaves) { return leaves.length; })
.entries(data)
.map(function(d) { return {'ms_since_epoch': d.key, 'requests_hour': d.values}; })
Идея D3.js заключается в том, чтобы манипулировать способом отображения/визуализации данных. Если вы хотите/должны управлять самими данными, есть некоторая свобода с D3.js, но это не намерение. 'd3.nest', скорее всего, вам нужно. Преобразование влияет только на данные, которые вы подаете на D3.js, а не на _source_ самих данных. – Joum
Кроме того, я заметил, что у вас есть тэг 'python' в вашем профиле. Возможно, это поможет: http://stackoverflow.com/questions/8800111/parse-csv-file-and-aggregate-the-values – Joum
Конечно! Удачи! – Joum