我正在使用 Excel 数据透视表来汇总一些数据,刚刚发现了一个问题。问题涉及如何计算聚合值。假设我有一张包含三列的数据表:名称、日期、值。如果我创建一个表,其中名称和日期用作行标签,值是聚合值,即平均值。数据透视表将如下所示:
+约翰 .3450 2010 年 5 月 14 日 1.234 2010 年 5 月 15 日 3.450 2010年5月16日 -3.25
我认为这里应该发生的是,对每个日期的值取平均值,然后对这些值取平均值以得出与名称 John 在同一行中的值。但这不是它所做的。它取每个日期的平均值,并将其显示在日期对面,但不是取这些数字的平均值,而是实际上使用原始数据并计算所有 John 值的平均值。它应该显示每日平均值的平均值以与树状层次结构相对应,但它只向我显示了所有 John 值的平均值。它本质上只会在一个级别上聚合,但在视觉上会创建它未使用的子级别。有人知道如何改变这一点或理解这在什么逻辑上是有意义的吗?如果我无法计算子分组的聚合,为什么要创建它们?
答案1
您已经正确地识别了数据透视表的作用,即计算所有“约翰”项目的平均值,而不是对平均值进行平均。
我确信这样做有正式的理由,但在我看来,这意味着总体平均值没有被扭曲,例如在某一天有一个异常观察值,但在其他日子却有很多观察值的情况。
答案2
如果您将另一个版本的日期字段拖到 DataField 中,我相信您会发现该数据集更严重地偏向 2010 年 5 月 16 日。
没有办法强制 Excel 根据其下方的级别创建平均值,您必须将数据复制到工作簿中的另一个区域并直接计算平均值。
这也许不是您想听到的,但这是唯一的选择。