我有一个带有时间日志和每次测量的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
有什么想法吗?
答案 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↵来最终确定数组公式。 尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此最好将参考范围缩小到最小值。
如果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。