gpt4 book ai didi

javascript - 使用 d3.js 计算 CSV 文件的行数

转载 作者:数据小太阳 更新时间:2023-10-29 05:33:36 25 4
gpt4 key购买 nike

假设我有这个 CSV 文件

Day,What
2013-10-27,Apple
2013-10-27,Cake
2013-10-27,Apple
2013-10-28,Apple
2013-10-28,Apple
2013-10-28,Blueberry
2013-10-28,Orange

我想用 D3.js 绘制一个时间序列图。我需要做的就是显示每天的行数总和。例如,11 月 27 日的值应为 3,28 日的值应为 4。

有什么方法可以存档吗?我一直在尝试从 CSV 数据集创建一个新数据集,但没有取得积极成果。

var dataset;

d3.csv("data.csv", function(d) {
return {
Day: new Date(d.Day),
What: d.What
};
},

function(error, rows) {
dataset = rows;
// I SUPPOSE THE FUNCTION THAT GENERATE THE NEW DATASET SHOULD GO THERE
});

最佳答案

您可以在累积计数时使用 JavaScript 对象属性的快速查找作为索引:

var counts = {};
rows.forEach(function(r) {
if (!counts[r.Day]) {
counts[r.Day] = 0;
}
counts[r.Day]++;
});

然后您需要将它转换回一个数组,以便您可以将它与 D3 一起使用:

var data = [];
Object.keys(counts).forEach(function(key) {
data.push({
day: key,
count: counts[key]
});
});

我在这里假设您想忽略“What”列,因为您只讨论了聚合天数并且同一天有不同的“What”值。如果您想在计数时考虑“What”,您可以将其构建到原始 counts 对象的键中 (r.Day + r.What)。

编辑:根据评论,添加带有复合键的代码。

var counts = {};
rows.forEach(function(r) {
var key = r.Day + r.What;
if (!counts[key]) {
counts[key] = {
day: r.Day,
what: r.What,
count: 0
};
}
counts[key].count++;
});

var data = [];
Object.keys(counts).forEach(function(key) {
data.push(counts[key]);
});

关于javascript - 使用 d3.js 计算 CSV 文件的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com