## Issue

I have function that calculates sum of json data in all columns on my tables. I want to get the average of each column, but I end up getting NaN or infinity, What am I doing wrong?

This is my implementation for getting sum

```
getSum(columnNumber) {
let sum = 0;
const columnNumberToPropertyMap = [
"id",
"teamNumber",
"rural",
"completed",
"entirehouseholdabsent",
"postponed",
"refused",
"vacant",
"dwelling"
];
const property = columnNumberToPropertyMap[columnNumber];
return this.rural.reduce((acc, curr) => {
//const adder = Number(curr[property]) || 0;
const adder = isNaN(Number(curr[property])) ? 0 : Number(curr[property]);
sum = acc + adder
return sum;
}, 0).toFixed(2);
}
```

this gives me the sum of all the rows in the column.

How am trying to get the average of each column

```
getSum(columnNumber) {
let sum = 0;
let average = 0;
const columnNumberToPropertyMap = [
"id",
"teamNumber",
"rural",
"completed",
"entirehouseholdabsent",
"postponed",
"refused",
"vacant",
"dwelling"
];
const property = columnNumberToPropertyMap[columnNumber];
return this.rural.reduce((acc, curr) => {
//const adder = Number(curr[property]) || 0;
const adder = isNaN(Number(curr[property])) ? 0 : Number(curr[property]);
sum = acc + adder
average = (sum)/adder;
return average ;
}, 0).toFixed(2);
}
```

I end up with NaN or infinity at the below of each column, am assuming

average = total of each column / no of items on each column

## Solution

To find the average, you can simply call `getSum`

and then divide it by the number of rows. So, implementation would be like this:

```
getAverage(columnNumber) {
let sum = getSum(columnNumber);
let count = this.rural.length;
return sum / count;
}
```

Or, in one line, `return getSum(columnNumber)/this.rural.length;`