如何在电子表格中正确对齐平均值和标准差输出?


2

我现在不确定制定这个问题的最好方法,所以我将使用一个使用随机数的例子。我从分配给ID的值开始,因此每个ID可以是n = 1,n = 2,...等

ID  Value   
1   1235        
1   326     
1   567     
2   768     
2   646     
3   4367        
3   346     
3   35      
4   436     
5   3467        
5   46      
6   3467        
6   3532        
6   457     
7   3463        
7   3463
7   9328
7   2498

等等

我想在Excel / Calc中计算平均值和SD,以便正确对齐值(理想情况下会有合并的单元格),给定其输入的一个,两个,三个......等单元,输出的一个单元格。

示例截图:

在此输入图像描述

我想要获得什么。AVG和SD表示(随机)给定数据的正确值; 因此AVG和SD正确对齐] 1

我想要的是,一种自动计算平均值和SD的方法,考虑到不同的n,以便正确对齐/格式化。

必须有一个简单的方法,但现在我无能为力。-_-

我很感激任何建议。

Answers:


1

如果您假设Column A已排序,这并不难,因此我们正在处理Column中的连续范围B (这是您的问题的视觉方面所暗示的)。E使用以下公式将Column设置为辅助列:

  • E2=IF(A2=A3, E3, ROW())

对于每一行,它标识当前行所在范围的最后一行。然后,您可以获得所需的结果

  • B2=IF(A1=A2, "", AVERAGE(B2:INDIRECT("B" & E2)))
  • C2=IF(A1=A2, "", STDEV(B2:INDIRECT("B" & E2)))

(或者使用您想要的任何方法来计算标准偏差。)这将检查它是否是范围的第一行。如果是,则使用该INDIRECT()函数在当前单元格和具有相同ID值的最后一个单元格之间构造范围。

       

当然,您可以隐藏Column E,或使用一些看不见的列(例如Z)作为辅助列。请注意,此解决方案不使用数组公式。


很少的代码和优雅,帮助列不是一个问题,因为它可以在需要时移开。它做我想要的。当然我也应该考虑一个数据透视表。谢谢你们的贡献。
杰克2015年

2

这不是你要求的,但我使用数据透视表:

具有平均和标准偏差的枢轴表

(我将第一个列标题更改为ID并将第二列和第三列格式化为仅显示两个小数位,否则它就是数据透视表生成器中显示的内容。)

您可以通过以下方式获得您要求的内容:

=IF($A2=$A1,"",AVERAGEIF($A2:$A19,$A2,$B2:$B19))

在C2中,和:

=IF($A2=$A1,"",STDEV.P(INDIRECT("R"&MATCH($A2,$A:$A,0)&"C2:R"&MATCH($A2,$A:$A,1)&"C2",0)))

在D2中并向下填充两列。每个公式中的外部IF仅将值放在包含特定ID的第一行中。C2公式的其余部分应该是直接的,AVERAGEIF平均特定标准为真的数字。在这种情况下,它在第一列中查找,选择与第一列中当前行中的值具有相同值的数字,然后平均第二列中的相应数字。

不幸的是,没有“STDEVIF”(至少在Mac上的Excel 2011中,也许在你使用的任何电子表格程序中都有。如果是这样,只需用它代替C2公式中的AVERAGE),所以你必须要棘手:-)。方法是找到您想要标准偏差的单元格范围,构造对这些单元格的引用,然后将该引用传递给STDEV.P。通过查找第1列中的第一行并使用与第1列中当前行中的值相同的值来构造范围,然后查找最后一行第1列中的行与第1列中当前行中的值具有相同的值。这两个值描述了要使用的第1列子范围的顶部和底部,因此在字符串中构造R1C1样式引用,使用INDIRECT把它变成一个实际的引用,然后传递给STDEV.P。简单!:-)好吧,这有点可怕,但它确实有效。


2

Excel没有内置的功能。您需要使用小计或数据透视表,它们不会执行您的操作。

在此输入图像描述

要使用公式构建表,请使用以下两个函数。

在C2中

=IF(A2<>A1,AVERAGEIF($A$2:$A$13,A2,$B$2:$B$13),"")

在D2中输入并按下进入 ctrl+shift+enter

=IF(A2<>A1,STDEV(IF($A$2:$A$13=A2,$B$2:$B$13)),"")

然后复制这些公式

IF(A2 <> A1 ......一开始基本上只表示如果A列与上一行之间的A列不同,则显示一些内容。

Averageif的工作方式与您认为应该完全一样。

D列是一个数组公式,所以首先它进入并在范围内的每个单元格上执行if语句,它将为每个单元格返回一个类似于(1,14,13,3,FALSE,FALSE ...)的数组。然后计算此标准偏差,基本上应忽略FALSE值。

此方法假定数据按ID排序。如果没有排序,那么平均值和标准偏差计算结果是正确的,但每次ID变化时它们都会出现,而不仅仅是第一次。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.