1 | function 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 |
|
17 | function 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 |
|
33 | function 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 |
|
47 | function 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 |
|
55 | function 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 |
|
87 | export { sum, max, min, mean, mode };
|
88 | export var statMap = {
|
89 | min: min,
|
90 | max: max,
|
91 | mean: mean,
|
92 | sum: sum,
|
93 | mode: mode
|
94 | };
|
95 | export function getColumn(data, columnName) {
|
96 | return data.map(function (item) {
|
97 | return item[columnName];
|
98 | });
|
99 | }
|
100 | export function getSatByColumn(type, column) {
|
101 | return statMap[type](column);
|
102 | }
|
103 |
|
\ | No newline at end of file |