D3. js вложение, сведение и суммирование с несколькими ключами - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь преобразовать файл csv в формат JSON для визуализации D3. js. Данные в CSV не агрегированы.

Данные файла CSV выглядят следующим образом:

Country,1/22/20,1/23/20,1/24/20,1/25/20,1/26/20,1/27/20,1/28/20
China,1,1,2,3,4,7,11      
China,0,3,5,15,22,35,46    
China,2,6,15,27,46,75,95    
Colombia,0,0,0,0,0,0,1        
Congo,0,0,0,0,0,0,2   

Использование D3 для синтаксического анализа CSV

const files = ['confirmed-global.csv', 'deaths-global.csv', 'recovered-global.csv'];

Promise.all([
    d3.csv(files[0]),
    d3.csv(files[1]),
    d3.csv(files[2])
]).then(([file1, file2, file3]) => {
    structureData(file1, file2, file3);
});

Использование вложенности D3 для получить значение ключа в зависимости от страны

function structureData(file1, file2, file3) {  // Just using a single file for now
    var output = d3.nest()
        .key(function (d) {
            return d.Country
        }).entries(file1);

    console.log(output)
}

Результат вложенности

   [0 … 2]
    0:
    key: "China"
    values: Array(12)
    0: {Country: "China", 1/22/20: "1", 1/23/20: "1", 1/24/20: "2", 1/25/20: "3", …}
    1: {Country: "China", 1/22/20: "0", 1/23/20: "0", 1/24/20: "0", 1/25/20: "1", …}
    2: {Country: "China", 1/22/20: "0", 1/23/20: "3", 1/24/20: "5", 1/25/20: "15", …}
    ...........

Я пытаюсь получить ключ, а в значениях есть агрегат сумма для каждой даты.

Мой подход к достижению этого следующий:

  output.forEach(x => {
        x.values.slice(1).forEach(value => {
            for (var key in value) {
                if (value.hasOwnProperty(key)) {
                    console.log(key + " -> " + value[key]);
                }
            }
        })

В конечном итоге сформировать новый JSON объект из этого.

Есть ли лучше подойти к этому ??? Буду признателен за любую помощь. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...