CSV用データベースライブラリ(7)

総和とほとんど同じだが、平均は次のように取る。


var d = data.select("名前", "太郎");
var m = d.average("計").getValue(0, "計")

関数を用いることもできる。


var f = function(x) { return x * x; }
var d = data.select("名前", "太郎");
var m = d.average("計").getValue(0, "計")
var s2 = d.average("計", f).getValue(0, "計") - m * m;

これで分散が求まる。


this.average = function(item, f) {
var d = new dataSet();

// どのカラムか決める
var col = this.getColumn(item);
if(col == null)
return null;

d.header = [ this.header[col] ];
var sum = 0;
if(f instanceof Function) {
for(var i in this.data) {
var num = this.data[i][col];
if(!isNaN(num))
sum += f(num - 0);
}
}
else {
for(var i in this.data) {
var num = this.data[i][col];
if(!isNaN(num))
sum += num - 0;
}
}
d.data = [ [ sum / this.data.length ] ];

return d;
}