Javascript 我可以用D3标准化CSV数据吗?

Javascript 我可以用D3标准化CSV数据吗?,javascript,csv,d3.js,Javascript,Csv,D3.js,我的原始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, 4

我的原始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,
我看了devdocs一、两年了

我得到了这个代码,从这个页面中删减/修改

当我处理完数据后,它会打印一行,但是为了使我的数据正常化,我需要将其“扩展”为多行,而我无法弄清楚如何做。我想不出如何使用
map
filter
reduce
。。。。如果有什么我想要的相反的减少


如何实现这一点?

您可以使用内置的
map
reduce
功能来实现这一点,无需D3,如下所示:

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
作为保留字,此代码无法完全工作。但是应该给你正确的想法。

你需要将CSV中的每条记录转换为3条记录(每种数据类型一条记录。你想要
push()
将它们放入一个新的数据数组中,并在应用程序中使用该数组visualization@genestd在csv函数或回调函数中?如果它在csv函数中,我将以嵌套数组结束…在回调函数中执行此操作,然后将新变量作为
(数据)传递到
stratify()
函数中
Yep,它不包含任何解析csv的代码。它希望它已经被解析为一个对象列表,其中键是列标题
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), [])