UNPKG

1.68 kBJavaScriptView Raw
1function max(x) {
2 if (x.length === 0) {
3 throw new Error('max requires at least one data point');
4 }
5
6 var value = x[0];
7
8 for (var i = 1; i < x.length; i++) {
9 if (x[i] > value) {
10 value = x[i];
11 }
12 }
13
14 return value * 1;
15}
16
17function min(x) {
18 if (x.length === 0) {
19 throw new Error('min requires at least one data point');
20 }
21
22 var value = x[0];
23
24 for (var i = 1; i < x.length; i++) {
25 if (x[i] < value) {
26 value = x[i];
27 }
28 }
29
30 return value * 1;
31}
32
33function sum(x) {
34 if (x.length === 0) {
35 return 0;
36 }
37
38 var sumNum = x[0] * 1;
39
40 for (var i = 1; i < x.length; i++) {
41 sumNum += x[i] * 1;
42 }
43
44 return sumNum;
45}
46
47function mean(x) {
48 if (x.length === 0) {
49 throw new Error('mean requires at least one data point');
50 }
51
52 return sum(x) / x.length;
53}
54
55function mode(x) {
56 if (x.length === 0) {
57 throw new Error('mean requires at least one data point');
58 }
59
60 if (x.length < 3) {
61 return x[0];
62 }
63
64 x.sort();
65 var last = x[0];
66 var value = NaN;
67 var maxSeen = 0;
68 var seenThis = 1;
69
70 for (var i = 1; i < x.length + 1; i++) {
71 if (x[i] !== last) {
72 if (seenThis > maxSeen) {
73 maxSeen = seenThis;
74 value = last;
75 }
76
77 seenThis = 1;
78 last = x[i];
79 } else {
80 seenThis++;
81 }
82 }
83
84 return value * 1;
85}
86
87export { sum, max, min, mean, mode };
88export var statMap = {
89 min: min,
90 max: max,
91 mean: mean,
92 sum: sum,
93 mode: mode
94};
95export function getColumn(data, columnName) {
96 return data.map(function (item) {
97 return item[columnName];
98 });
99}
100export function getSatByColumn(type, column) {
101 return statMap[type](column);
102}
103//# sourceMappingURL=statistics.js.map
\No newline at end of file