簡體   English   中英

我可以使用D3標准化CSV數據嗎?

[英]Can I normalise CSV data with D3?

我的原始CSV中有這種數據:

id, lat, long, data_type_1, data_type_2, data_type_3
1 , 50,  1,    10,          20,          40

我需要將其轉換為這種結構:

id, lat, long, data_type, value,
1 , 50,  1,    1,          10,
1 , 50,  1,    2,          20,
1 , 50,  1,    3,          40,

我看過d3.csv的devdocs和一兩個問題

我已經從bl.ocks.org頁面上捏過/修改了這段代碼。

d3.csv("traffic_data.csv", function(d) {
                numericColHeaders.forEach(header => d[header] = parseInt(d[height]));
                console.error(d); // to inspect in the console
                return d;
            }, function(error, data) {
                if (error) throw error;
                var root = d3.stratify()
                    .id(function(d) {
                        return d.data_type;
                    })
                    .parentId(function(d) {
                        return d.id;
                    })
                    (data)
                    .sum(function(d) {
                        return d.value;
                    })
                    .sort(function(a, b) {
                        return b.height - a.height || b.value - a.value;
                    });

                treemap(root);
                // do more stuff
            })

當我用控制台處理數據時,它會打印一行,但是要使我的數據規范化,我需要將其“擴展”為多行,而我不知道該怎么做。 我想不出如何使用mapfilterreduce ...。如果有什么需要,與reduce相反。

我該如何實現?

您可以在不使用內置map D3的情況下執行此操作,並reduce功能:

rows.map(row => {
  const { id, lat, long, data_type_1, data_type_2, data_type_3 } = row

  return [
    {
      id, lat, long,
      data_type: '1',
      value: data_type_1
    },
    {
      id, lat, long,
      data_type: '2',
      value: data_type_2
    },
    {
      id, lat, long,
      data_type: '3',
      value: data_type_3
    }
  ]
}).reduce((prev, next) => prev.concat(next), [])

long一直是保留字,因此此代碼無法完全正常工作。 但是應該給你正確的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM