如何对数字列进行累积汇总<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我想在JMP中使用一种方便的方法对某个列进行累积汇总,对于目标列的每个值,您会被告知有多少行(元素)在该列中遇到该值的某个边界( 低于或相等到 ,大于或 - 等于对 ,少于 ,要么比...更棒 )。
例如,从此表开始:
| 培养皿ID | N细菌 |
|---|
| 0 | 100 |
| 1 | 103 |
| 2 | 98 |
| 3 | 98 |
| 4 | 102 |
| 五 | 97 |
我可能想要生成培养皿的数量小于或等于每种细菌,可能是这样的:
| 最多N细菌 | N Petri菜肴 |
|---|
| 96 | 0 |
| 97 | 1 |
| 98 | 3 |
| 99 | 3 |
| 100 | 4 |
| 101 | 4 |
| 102 | 五 |
| 103 | 6 |
| 104 | 6 |
同样,我可能想要列至少N细菌 ,少于N个细菌 ,和超过N细菌 。
有没有一种方便的方法可以使用任何菜单工具和/或公式列来执行此操作,还是需要JSL脚本?是否需要对目标色谱柱(N细菌)上的原始表进行预分类?是否有任何附加组件可以做到这一点?
注意:在MS Excel中,这可以使用“ COUNTIF “功能与手动创建的”最多N细菌“(或任何其他边界)列相邻。
谢谢。
Re:如何对数值列进行累积汇总Eval(Eval Expr(Col Sum(:N Bacteria <= Expr(:Threshold [Row()]))))
对于Threshold列中的每个给定值,我们要创建一个0/1标志的列向量,用于表示:N细菌列(整个列)中的哪些行满足不等式。
假设阈值列的第3行是98。然后通过以下方式生成向量:
:N Bacteria <= 98,它将:N Bacteria列的每一行与98进行比较,并相应地创建0或1。
Col Sum()函数将对由以下项生成的向量中的0和1求和:N Bacteria <= 98。总和代表行数,其中:N细菌<= 98。
:阈值[row()]段是:第1行的阈值[1],第2行的阈值[2]等。问题是我们需要在评估公式的其余部分之前,评估row()的值,替换数据表中包含的实际常量值。
因此,我们使用构造Expr(:Threshold [Row()]),当与theEval(EvalExpr())构造一起使用时,会导致:Threshold [row()]被替换为包含在其中的任何值。:阈值列的“行”行。
干杯,
布雷迪
Re:如何对数值列进行累积汇总谢谢你这个配方Brady。 我仍然对为什么你需要使用下标([])进行阈值而不是N细菌的细节感到困惑,以及为什么你需要以这些方式使用“Expr”和“Eval Expr”。 不需要的值缓存如何工作,以及该公式如何解决它以使其产生正确的结果?你能详细说明这些细节吗?
Re:如何对数值列进行累积汇总你可以用下面的公式做到这一点;只需改变不平等以反映您的需求。
Eval(Eval Expr(Col Sum(:N Bacteria <= Expr(:Threshold [Row()]))))
在此示例中,摘要列与原始数据在同一个表中创建。(查看附件。)
请注意,此公式中的阈值和计数对应于原始帖子的第二个表中的列。
需要Eval(Eval Expr())构造来强制评估每个给定行的阈值;例如,如果你尝试下面的公式,它将不会给你你想要的结果。
Col Sum(:N Bacteria <=:Threshold [Row()])
干杯,
布雷迪