gpt4 book ai didi

javascript - D3.js:如何查找按年和月分组的平均值?

转载 作者:行者123 更新时间:2023-12-03 05:58:36 24 4
gpt4 key购买 nike

我正在尝试查找与该年份相关的所有 Activity (即在键中获取)链接的所有值(即此处的持续时间)的月平均值。

我的 csv 是这样的:

ID      TEST_DATE     TEST_DURATION    TEST_ACTIVITY
10000 1/1/2014 0:00 4 Electricity Bill Payment
10001 1/2/2014 0:00 1 Water Bill Payment
10002 1/3/2014 0:00 2 Gas Bill Payment
10003 1/4/2014 0:00 1 Electricity Bill Payment
10001 1/2/2014 0:00 1 Water Bill Payment
10001 1/2/2014 0:00 1 Water Bill Payment
14878 9/12/2016 6 Statement Request

我的代码如下:

d3.csv("test.csv", function(error,data) {
data.forEach(function(d) {
//console.log(Object.prototype.toString.call(d.TEST_DATE));
a = d.TEST_DATE.split(" ",1);
b=a[0].split("/");
f_date = b[0].concat("-").concat(b[1]).concat("-").concat(b[2]);
console.log(d.f_date);
console.log(f_date);
var date = new Date(f_date);
var day = date.getDay();
var month = date.getMonth()+1;
var year = date.getFullYear();
console.log("Day:"+day+" ,Month:"+month+" ,Year:"+year);

if(data.TEST_ACTIVITY == keys){
console.log("check:"+keys);
groupByMonth = d3.nest()
.key(function(d){return year; })
.key(function(d) {return month; })
.rollup(function(v) { return d3.mean(v, function(d) { return d.TEST_DURATION; }); })
.entries(data);
console.log("Grouped Values by Month::"+JSON.stringify(groupByMonth));
}

//finding the count of no. of ids per activity using Test_ID
countByActivties= d3.nest()
.key(function(d) { return d.TEST_ACTIVITY; })
.rollup(function(v) { return v.length; })
.entries(data);
console.log("Count of activities based on test-id::"+JSON.stringify(countByActivties));

//sorting the data in descending order and find the top keys
keys = countByActivties
.sort(function(a, b){return b.values-a.values})
.slice(0,6)
.map(function(d){ return d.key;})
console.log("Keys::"+keys);

我收到以下错误:

Grouped Values by Month::[{"key":"2016","values":[{"key":"9","values":2.2857142857142856}]}]

它的输出例如应该是这样的:

Grouped Values by Month::[{"key":"2016","values":[{"key":"9","values":6}]}]

其他月份也保持同样的休息。

有什么想法吗?

最佳答案

[此答案适用于代码的第一个版本]

假设您的第一个解析函数按预期工作,您应该直接记住数据中的日期字段。请随意更改字段名称。

data.forEach(function(d) {
a = d.TEST_DATE.split(" ",1);
b=a[0].split("/");
f_date = b[1].concat("-").concat(b[0]).concat("-").concat(b[2]);
//NEW LINES: add year, month and day fields to the data (*1 to convert to number)
d.year = b[2]*1;
d.month = b[0]*1;
d.day = b[1]*1;
console.log(d.TEST_DATE);
console.log(f_date);
})

然后...

    groupByMonth = d3.nest()
.key(function(d){return d.year; }) //NB: use "d.year", not "year"
.key(function(d) {return d.month; }) // idem with month
.rollup(function(v) { return d3.mean(v, function(d) { return d.TEST_DURATION; }); })
.entries(data);
})

我不明白如何使用 keys 数组,您的 data.forEach(function(keys){ 可能存在另一个与您的问题不同的问题...}).

关于javascript - D3.js:如何查找按年和月分组的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39827055/

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