データポイントのリストでグループ化し、それらを日ごとに集計するにはどうすればよいですか?たとえば、次のリストがあります。
2012-03-18T00:00:04
2012-03-18T00:05:03
2012-03-19T00:10:04
2012-03-19T00:15:03
2012-03-19T00:20:03
2012-03-19T00:25:03
私が欲しい:
2012-03-18,2
2012-03-19,4
データポイントのリストでグループ化し、それらを日ごとに集計するにはどうすればよいですか?たとえば、次のリストがあります。
2012-03-18T00:00:04
2012-03-18T00:05:03
2012-03-19T00:10:04
2012-03-19T00:15:03
2012-03-19T00:20:03
2012-03-19T00:25:03
私が欲しい:
2012-03-18,2
2012-03-19,4
と呼ばれる文字列の配列としてデータポイントがあると仮定しますpoints
var map = {};
points.forEach(function(x) {
var s = x.split("T")[0];
if(map.hasOwnProperty(s)) {
map[s]++;
}
else {
map[s] = 1;
}
});
これにより、その日付が発生するたびにカウントされます。
例
js> points
["2012-03-18T00:00:04", "2012-03-18T00:05:03", "2012-03-19T00:10:04", "2012-03-19T00:15:03", "2012-03-19T00:20:03", "2012-03-19T00:25:03"]
js> points.forEach(function(x) {
var s = x.split("T")[0];
if(map.hasOwnProperty(s)) {
map[s]++;
}
else {
map[s] = 1;
}
});
js> map
({'2012-03-18':2, '2012-03-19':4})
T
日付と時刻を分けるという仮定をしなければなりませんでした。正規表現または部分文字列を使用して日付を抽出し、集計に追加できます。正規表現を使用しました。
var count = {};
var input = [
"2012-03-18T00:00:04",
"2012-03-18T00:05:03",
"2012-03-19T00:10:04",
"2012-03-19T00:15:03",
"2012-03-19T00:20:03",
"2012-03-19T00:25:03"
];
for(var i = 0; i < input.length; i++) {
var date = /(.*)T/.exec(input[i])[1];
if(!count[date]) {
count[date] = 1;
}
else {
count[date] += 1;
}
}
for (var date in count) {
document.write(date+","+count[date]+"<br>");
}