如何使用公式计算所选行的平均值大家好,
首先,我基本上是 JMP 的新用户,所以我不知道如何编写任何脚本。只是基本公式等。这是我需要做的,但不知道如何做。
我想首先计算每个相同“样品号”的“青色素含量”的平均值(目标是有一列计算我在“三次进样的平均值”列中放置的内容。
同样,我想要一列给出每个“发展阶段”的这三个平均值的平均值,我已将目标放在标有“发展阶段的平均值”的列中
这不是移动平均线... 我想也许公式中的条件语句会起作用? 或者也许是一个使用某种第三列(例如“ID 代码”列)作为标识符来告诉它要平均哪些行的公式?
谢谢!
基础数据分析和建模视窗回复:如何使用公式计算所选行的平均值您需要的 2 个公式是
If( :Sample Number != :Sample Number[Row() + 1] | Row() == N Rows( Current Data Table() ),
Col Mean( :"Amount of Cyanidin (ng/kg)"n, :Sample Number )
)
和
If( :Developmental Stage != :Developmental Stage[Row() + 1] | Row() == N Rows( Current Data Table() ),
Col Mean( :"Amount of Cyanidin (ng/kg)"n, :Developmental Stage )
)

回复:如何使用公式计算所选行的平均值你好!
感谢您的答复!我尝试过并且有效。我只是不太明白它是如何工作的......
到目前为止我想我明白了
如果样本数不等于下一行的样本数
或者
当前行数等于当前数据表的总行数? (这部分我很困惑。另外,当我输入此内容时,我收到有关使用“当前数据表”部分的警告。
然后
计算样品数相同时“花青素含量(ng/kg)?”的平均值?
能否向这位初学者解释一下该公式的工作原理?
后续问题 - 对于我的完整数据表,我显然会有更多的数据,其中的行具有不同的品种名称,但具有相同的样品编号和注射编号,如我的示例所示。这些公式仍然有效吗?我需要考虑品种名称才能将它们分开吗?
谢谢
回复:如何使用公式计算所选行的平均值计算公式实际上非常简单。您的规范要求结果仅显示在特定行上,这使得计算有点混乱。
当将公式应用于给定列时,JMP 只需采用该公式并将其应用于第 1 行,然后应用于第 2 行,依此类推到表中的最后一行。因此,下面的公式将给你你想要的答案
Col Mean( :"Amount of Cyanidin (ng/kg)"n, :Sample Number )
基本上,该公式计算“花青素含量 (ng/kg)”列的平均值,并将其写到该列的行中。因为还指定了“按”列,“样本数”,所以它计算为“样本数”找到的每个级别的平均值,然后将其写入新列的行。

但您的要求是仅在最后一行显示每个“样本数字”的平均值。为了识别这些行,需要有一些可以通过编程方式进行评估的东西。在本例中,我选择检查当前行处理后该行中“Sample Number”的值是否发生变化。这样公式就变成了
If( :Sample Number != :Sample Number[Row() + 1] ,
Col Mean( :"Amount of Cyanidin (ng/kg)"n, :Sample Number )
)
If() 子句解释为:如果“Sample Number”的当前值不等于当前行之外的第 1 行( Row() + 1 )中“Sample Number”的值,则进行计算。如果这个比较不正确,那么它什么也不做。
因此,除了数据表中的最后一行之外,这非常有效。当 JMP 尝试查看数据表中最后一行以外的第 1 行时,它没有可比较的行,因此无法做出决定。

因此,公式也需要考虑到这个问题。
If( :Sample Number != :Sample Number[Row() + 1] | Row() == N Rows( Current Data Table() ),
Col Mean( :"Amount of Cyanidin (ng/kg)"n, :Sample Number )
)
这里附加子句检查当前行 Row() 是否等于数据表中的行数 N Rows( Current data Table().第二个子句用“|”分隔这表明如果第一个子句“OR”第二个子句为真,则处理计算。
第二个公式列遵循相同的逻辑,只是“按”列更改为“发展阶段”。
关于需要更改哪些内容才能在完整数据表上使用它。我不知道你所说的“品种”。公式正常工作的要求是数据按照“发育阶段”和“样品编号”的顺序排序,并且“花青素含量(ng/kg)”是平均值所在的列的名称计算于.如果其中任何列的名称发生更改,则需要在公式中交换新名称。
回复:如何使用公式计算所选行的平均值其他选项是将 If 与 Col Min 和 Col Max 函数一起使用,但如果您要使用此功能,请务必小心,因为这可能会由于使用 Row() 与 Col Max/Col Min (使在 Set Each Value 中使用公式表达式以及在 Col 统计公式中使用表达式作为第一个参数支持的行为)
列平均 1
If(Row() == Col Max(Row(), :Sample Number),
Col Mean(:"Amount of Cyanidin (ng/kg)"n, :Sample Number)
)
列平均2
If(Row() == Col Max(Row(), :Developmental Stage),
Col Mean(:CoAvg1, :Developmental Stage)
)

回复:如何使用公式计算所选行的平均值非常感谢。多亏了你的解释,我想我现在已经明白了!
回复:如何使用公式计算所选行的平均值我知道这是个老帖子了,但我当时也在找同样的问题,然后找到了我以前写的一个脚本,它能很轻松地实现这个功能。我不记得最初是从哪里找到的了,但我很高兴它还能用。下面的例子是针对一系列行的。
row_range_lower = rownum1;
row_range_upper = rownum2;
dtx<
rowrangefull=dtx< freq_avg = Col mean(If( Selected(),列名), . );