从数组中提取上四分位数据并将其放入新列

时间:2013-08-15 01:06:23

标签: excel

您好,感谢您提前提供任何帮助

以下是假设数据集;丰度=计数数据;泥%=发现动物的泥浆含量;泥箱=箱子我根据泥%构成;和UQ =来自其相应泥浆仓的丰度数据的上四分位数(即泥浆仓1中丰度数据的上四分位数为17.25等)。

问题:

在excel中,对于四个泥浆箱中的每一个的丰富数据,我想要提取丰度列中的任何值> =该特定泥浆仓的上四分位值并将它们放在新的列中在同一张纸上(不符合标准的值之间没有间隙)以及相邻单元格中相应的泥浆%值。我已将新列添加到下面的表格中,以便让您了解我所追求的内容。

abundance | mud% |  mud bin | UQ  |               | New column |  Mud%   |
        18  10.9    1                                 18          10.9(mud bid 1)
        15  6.5     1                                 44          38.9(mud bin 1)
        6   13.4    1                                 45          38  (mud bin 2)
        13  42.1    1                                 37          37.8(mud bin 2) 
        15  36.4    1                                etc
        44  38.9    1        17.25                   etc
        22  46      2
        30  36.4    2
        45  38      2
        29  35.3    2
        37  37.8    2
        29  41.8    2        35.25
        11  44.4    3
        17  47.8    3
        21  40.7    3
        15  13.9    3
        35  13.9    3
        14  13.9    3
        15  13.9    3         19
        19  12      4
        14  12      4
        10  12      4
        12  12      4
        14  12      4
        13  12      4
        45  9.525   4
        66  9.525   4
        78  9.525   4         45

现实情况是,我有一个相当大的数据集,其中包含许多物种的丰度数据,所有数据都在同一个excel表格中,并且非常感谢我们如何在最有效的庄园中实现这一目标。

1 个答案:

答案 0 :(得分:0)

对于初学者来说,为了使这个解释更简单,我将假设最后一行数据在第100行。

填充所有订单项的上四分位数值

首先你需要使用Quartile公式;但是,由于您要在bin中找到上四分位数,因此您必须使用数组公式。将此公式放在UQ列中(放在单元格D2中并向下拖动)。 输入公式时请务必按Ctrl + Shift键,然后按Enter键

=QUARTILE(IF($C$2:$C$100=C2,$A$2:$A$100,""),3)

此公式的第一部分$C$2:$C$100=C2是您的条件。在满足这一条件的情况下,您将获得$A$2:$A$100中的相应值;否则,你会得到一个空白值。这将为您提供一系列丰富值,与指定的泥浆区C2相匹配。现在你有了你的数据子集,四分位函数会给你第三个四分位数的值(mudbin 1的17.25,它将放在mudbin为1的每一行的旁边)。

现在我们已经拥有了所有的四分位数,我们可以获得大于该泥浆的UQ的所有丰度值。这分两部分完成

获得的丰度值大于mudbin UQ

  1. 首先,您需要选择与您的数据具有相同行数的一列单元格(例如,选择单元格F2:F100)
  2. 在公式栏中输入以下公式(当F2:F100突出显示时)并按Ctrl + Shift键,然后输入

    =IF($A$2:$A$100>$D$2:$D$100,$A$2:$A$100,"")

  3. 与之前使用的IF语句类似,此公式查找的所有丰度值都大于其对应的UQ值。现在,列F将具有丰富的数字,其大于它的UQ值,而空白则不是。现在进入最后一步。

    填充大于UQ值的丰度值,没有空白

    1. 选择G2:G100(样本数据中的“新列”)
    2. 在公式栏中输入以下公式(当G2:G100突出显示时)并按Ctrl + Shift键,然后输入

      =INDEX(F2:F100,SMALL(IF(F2:F100<>"",ROW(F2:F100)-1),ROW()-ROW($F$1)))

    3. 再次查看IF语句,这将找到F2:F100中的每个值都不是空白,但不是抓取值,我们将跟踪该非空值的行号(由{{完成) 1}} )。现在我们有所有非空值的行号,我们可以按顺序获取非空值并在G2:G100中填充它们。 ROW(F2:F100)-1是一个计数器,ROW()-ROW($F$1)将使用计数器确定要返回的第n个最小数字。一旦我们得到非空值的行号,SMALL就会返回该值

      最后,要填充泥浆%,您需要使用非空白值的行号来获取泥浆%和泥浆仓(您已经使用公式获取非空白值的行号)。

      这不是一个简单的答案,但至少你不必使用VBA。