每小时测量的平均值和标准偏差

时间:2015-08-02 19:07:44

标签: excel excel-formula average standard-deviation array-formulas

我有一个带有时间日志和每次测量的Excel文件,该列表保留了几天的日志。我想计算每小时测量值的平均值和标准偏差。

我的问题是每小时测量的数量是不同的,所以我甚至无法开始。

列表如下所示:

Time            measurement
28/8/2013 16:17 3831
28/8/2013 16:36 3668
28/8/2013 16:36 3685
28/8/2013 16:36 3676
28/8/2013 17:13 3671
28/8/2013 17:36 3669
28/8/2013 17:36 3664
28/8/2013 18:36 3654
28/8/2013 18:36 3661

我需要这样的输出:

  Hour             Average      Stdv
28/08/2013 16:00    3715    77.64448897
28/08/2013 17:00    3668    3.605551275
28/08/2013 18:00    3657.5  4.949747468

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用measurement为ROWS和val logger = LoggerFactory.getLogger(X.getClass).asInstanceOf[Logger]在VALUES中数据转发两次,一次为平均值,一次为StdDev。通过选择年,月,日和小时来对行进行分组。

答案 1 :(得分:0)

AVERAGEIFS function可以轻松完成第一项任务。

=AVERAGEIFS(B$2:B$10, A$2:A$10, ">="&D3, A$2:A$10, "<"&D3+TIME(1, 0, 0))

对于第二个STDEV.S function条件,您需要一个数组公式

=STDEV.S(IF(A$2:A$10>=D3, IF(A$2:A$10<D3+TIME(1, 0, 0), B$2:B$10)))

需要使用 Ctrl + Shift + Enter↵来最终确定数组公式。 尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此最好将参考范围缩小到最小值。

enter image description here

如果A列中的日期时间按升序排序,则此标准公式应该有效。

=STDEV.S(INDEX(B:B, IFERROR(MATCH(D3-TIME(0, 0, 1), A:A)+1,2)):INDEX(B:B, MATCH(D3+TIME(0, 59, 59), A:A)))

虽然看起来更复杂,但它使用INDEX / MATCH函数对将B列中的值范围向下解析为A列的匹配值。这应该会大大减少一长串日期时间的计算。这不是数组公式,不需要Ctrl + Shift + Enter。