根据日期范围计算滚动平均值[重复]

Posted

技术标签:

【中文标题】根据日期范围计算滚动平均值[重复]【英文标题】:Calculate rolling average based on date range [duplicate] 【发布时间】:2022-01-14 10:35:35 【问题描述】:

我有一个每天早上用来称体重的谷歌表格

第 1 列是自动生成的时间戳。权重是我输入的值

Timestamp   Morning weight
7/1/2021 8:41:55    185
7/2/2021 5:50:54    185.8
7/4/2021 8:16:58    186.2
7/5/2021 9:45:23    184
7/6/2021 5:56:06    184.2
7/7/2021 6:52:24    183.4
7/8/2021 4:37:18    184.8
7/9/2021 5:46:20    183.8
7/10/2021 10:07:58  184.2
7/11/2021 9:07:25   182.4
7/12/2021 6:39:53   182.8
7/14/2021 5:36:02   183.4
7/15/2021 6:14:42   181.2
7/16/2021 5:30:41   182.6
7/18/2021 7:00:43   181
7/19/2021 5:14:21   180.6
7/22/2021 5:54:42   180.2
7/23/2021 5:46:52   179.4
7/24/2021 8:14:06   180.8
7/25/2021 6:58:56   180.4
7/29/2021 7:25:15   180.8
7/30/2021 6:09:04   180.4
7/31/2021 7:34:20   180
8/1/2021 8:35:40    179.6
8/2/2021 5:48:48    178
8/3/2021 5:36:37    179.4
8/5/2021 5:53:58    179.8
8/6/2021 5:43:34    179

我想计算一下我每周的平均体重。有时我忘记输入数据,所以我想根据可用的数据进行计算:

7/19/2021    181.76 // calculated from 180.6 + 181 + 182.6 + 181.2 + 183.4` / 5
7/26/2021    180.2 // calculated from 180.4 + 180.8+179.4 + 180.2` / 4

这是一张可能有用的电子表格图片。我根据日期对我想要的范围值进行了颜色编码

我尝试过/之前做过的事情

我尝试使用 VLOOKUP 公式,但我认为它无法添加滚动计算。 INDEX/MATCH 似乎也可行,但不确定它是如何工作的

在我刚刚在原始数据旁边输入另一列并运行此之前

=ROUND(AVERAGE('Daily Measurements'!B89:B96),1)`

然后运行相应的 VLOOKUP。

不过我需要一个更强大的

我目前正在根据PreviousDate + 7 公式计算每个星期一的日期

【问题讨论】:

【参考方案1】:

尝试:

=INDEX(QUERY(WEEKNUM(A2:A, 2), B2:B,
 "select Col1,avg(Col2)
  where Col2 is not null 
  group by Col1 
  label Col1'week number'"))

更新

四舍五入到小数点后一位:

=INDEX(TEXT(QUERY(WEEKNUM(A2:A, 2), B2:B,
 "select Col1,avg(Col2)
  where Col2 is not null 
  group by Col1 
  label Col1'week number'"), "@", "0.0"))

或:

=INDEX(TRUNC(QUERY(WEEKNUM(A2:A, 2), B2:B,
 "select Col1,avg(Col2)
  where Col2 is not null 
  group by Col1 
  label avg(Col2)''"), 1))

或:

=INDEX(ROUND(QUERY(WEEKNUM(A2:A, 2), B2:B,
 "select Col1,avg(Col2)
  where Col2 is not null 
  group by Col1 
  label avg(Col2)''"), 1))

【讨论】:

avg 上是否有简单的方法将小数点四舍五入到小数点后一位?例如例如 170.1 而不是 170.0999999 @VincentTang 确定,答案已更新 谢谢大家欣赏这个!

以上是关于根据日期范围计算滚动平均值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 在截断日期上滚动平均值

使用 pandas 的滚动窗口计算一天中每个时间的平均值

如何计算日期时间范围内的 n 个平均值?

计算平均值 (AVG),包括 Redshift DB 中某个日期范围内的缺失数据

根据月份日期列查找数据框列中每个因素的平均值[重复]

如何计算 BigQuery 的滚动平均值