0

我目前正在使用 dc.js、crossfilter.js 和 d3.js 来呈现一些可视化。我遇到了一个与我在这里寻找的内容非常相似的帖子Crossfilter query和这里d3 csv data loading

我的目标是解析我的 csv,并对于某个列,将其解析为每个对象行中的数组。例如,我有:

我的数据目前显示为:

[
{FY: 2011, proj_name: "project 1", category: "fruit", subcategory: "strawberry, mango", total: 1510},
{FY: 2011, proj_name: "project 2", category: "fruit",子类别:“橙子,芒果”,总数:100},
{FY:2011,项目名称:“项目 2”,类别:“蔬菜”,子类别:“芹菜”,总数:100}
]

但我希望将数据格式化为:

[
{FY: 2011, proj_name: "project 1", category: "fruit", subcategory: ["strawberry", "mango"], total: 1510},
{FY: 2011, proj_name: "project 1", category: “水果”,子类别:[“橙色”,“芒果”],总数:100},
{FY:2011,项目名称:“项目 1”,类别:“蔬菜”,子类别:[“芹菜”],总数:100 }
]

这是我可以放入 data.forEach(function (d)) 的东西吗?

    d3.csv("data.csv", function(data) { 
    data.forEach(function (d) { 
        d.FY = +d.FY; 
        d.total = +d.total; 
        d.subcategory = d.subcategory.split(/,/); 
        }) 
    })

我认为这是不正确的,它根本不起作用,但我在这里得到的是,这是需要在本专栏中重复完成的事情,以便我以后可以将子类别作为标签存储..有什么想法/反馈吗?

非常感谢提前

4

1 回答 1

2

D3 已经涵盖了这一点,d3.csv 的格式为:d3.csv(url[, accessor][, callback])其中 accessor 是为 csv 中的每一行调用以转换数据的函数。尝试这个:

d3.csv("data.csv", function(d) { 
  return {
    FY: +d.FY,
    total: +d.total,
    category: d.category,
    subcategory: d.subcategory.split(/,/)
  };
});
于 2013-10-25T02:44:37.950 回答