如何對數字列進行累積匯總<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()])
乾杯,
布雷迪