【发布时间】:2017-06-12 16:57:19
【问题描述】:
使用 Google Sheets 的脚本编辑器,我需要计算如下表的 每一列的平均值:
+---------+---------+---------+---------+
| | User 1 | User 2 | User 3 |
+---------+---------+---------+---------+
| | 20/1/17 | 21/1/17 | 22/1/17 |
+---------+---------+---------+---------+
| Movie 1 | 6 | 2 | 0 |
+---------+---------+---------+---------+
| Movie 2 | 2 | 1 | 5 |
+---------+---------+---------+---------+
| Movie 3 | 3 | 1 | 2 |
+---------+---------+---------+---------+
我希望结果是:
+---------+---------+---------+
| User 1 | User 2 | User 3 |
+---------+---------+---------+
| 3.6 | 1.3 | 2.3 |
+---------+---------+---------+
我有这个代码,如果我在仅由数字组成的表格上使用它,它就可以工作。问题是我的表中有字符串,所以 .reduce 返回 #NUM!错误(结果不是数字)。
var sum = array.reduce(function(r, e, i) {
e.forEach(function(a, j) {
r[j] = (r[j] || 0) + a
})
if (i == array.length - 1) r = r.map(function(el) {
return el / array.length
});
return r;
}, []);
return sum;
如何仅使用数值执行平均值?我尝试使用 .filter,但它似乎不适用于 Google Apps 脚本编辑器,或者我只是使用错误(很有可能)。
这是我用来过滤的条件:
(typeof el !== 'number')
【问题讨论】:
-
您的数据是否可以从数组中删除前两项或在 foreach 中跳过它们而不进行测试?基本上从应该是第一行的行开始,
if (r < 2) return;
标签: arrays google-apps-script google-sheets filter reduce