Javascript 如何使用d3.csv区分第一行中的相同键
Javascript 如何使用d3.csv区分第一行中的相同键,javascript,csv,d3.js,Javascript,Csv,D3.js,d3.csv自动将第一行识别为密钥名。 然后,如果第一行包含相同的名称键,则无法读取所有数据,d3.csv只读取一列 csv示例(Z是相同的键) 我想读取与相同键对应的两个数据(Z,在本例中)。 也许我们无法使用d3.csv函数提取“10,11,12” 您能告诉我如何读取这两列吗?您是正确的,d3.csv将无法提取完整的数据 但是,如果您有自定义数据格式,则使用将数据作为文本文件加载。 然后,您可以使用自定义格式解析它 这将为您提供一个数组,您可以在其中查找列。根据@musicaly\u ut的
d3.csv
自动将第一行识别为密钥名。
然后,如果第一行包含相同的名称键,则无法读取所有数据,d3.csv
只读取一列
csv示例(Z
是相同的键)
我想读取与相同键对应的两个数据(Z
,在本例中)。
也许我们无法使用d3.csv
函数提取“10,11,12”
您能告诉我如何读取这两列吗?您是正确的,
d3.csv
将无法提取完整的数据
但是,如果您有自定义数据格式,则使用将数据作为文本文件加载。
然后,您可以使用自定义格式解析它
这将为您提供一个数组,您可以在其中查找列。根据@musicaly\u ut的答案,您可以执行以下操作:
d3.text("txt.csv", function(err, txt){
var rows = d3.csv.parseRows(txt),
header = rows.shift(),
data = rows.map(function(r){
var obj = {};
r.forEach(function(c, i){
if (!(header[i] in obj))
obj[header[i]] = c;
else
obj[header[i]] += " " + c;
});
return obj;
});
});
>> console.log(JSON.stringify(data));
[{"X":"1","Y":"4","Z":"7 10"},
{"X":"2","Y":"5","Z":"8 11"},
{"X":"3","Y":"6","Z":"9 12"}
]
在这里,与使用d3.csv
一样,您正在为csv文件的每一行创建一个对象,其中的键对应于列名。与d3.csv
不同,如果两列具有相同的名称,则此方法仅将两列中的数据附加在一起(请参见下面的示例)
如果使用此方法输出生成的数据
,则会得到以下结果:
d3.text("txt.csv", function(err, txt){
var rows = d3.csv.parseRows(txt),
header = rows.shift(),
data = rows.map(function(r){
var obj = {};
r.forEach(function(c, i){
if (!(header[i] in obj))
obj[header[i]] = c;
else
obj[header[i]] += " " + c;
});
return obj;
});
});
>> console.log(JSON.stringify(data));
[{"X":"1","Y":"4","Z":"7 10"},
{"X":"2","Y":"5","Z":"8 11"},
{"X":"3","Y":"6","Z":"9 12"}
]