JMP 相當於 Excel 的 COUNTIF 函數我試著模仿這種 Excel 類型的行為:
| | A | B |
| 1 | 故障類型 | 此類型的失敗次數 |
| 2 | f1 | =countif($a$2:$a$999,a2) |
| 3 | f2 | =countif($a$2:$a$999,a3) |
| 4 | f1 | =countif($a$2:$a$999,a4) |
| 5 | f1 | =countif($a$2:$a$999,a5) |
| 6 | f2 | =countif($a$2:$a$999,a6) |
| … | … | … |
....在 JMP 中。這可以作為列公式嗎?
我嘗試過“Col Sum( :failureType == :failureType[ Row() ] )”,但這不起作用,我不明白為什麼。有時“:ColumnName”會傳回單一值,有時它會傳回整個列的條目並自動循環它們。有沒有辦法知道它會做什麼,也許從腳本索引?
基礎資料分析與建模回覆:JMP 相當於 Excel 的 COUNTIF 函數
也許按故障類型計算 1 列總和?
Col Sum(1, :FailureType)
這裡第 6 列有公式 Col Sum(1, :age)

回覆:JMP 相當於 Excel 的 COUNTIF 函數是的,這可能會起作用。
為什麼我的 Col Sum(...) 不起作用? Row() 是否也在每個步驟中進行內部更新?
回覆:JMP 相當於 Excel 的 COUNTIF 函數僅使用 Row() 建立列,您將看到它傳回的內容

你可以做同樣的事情
:failureType[Row()]
並為
:failureType
最後為了
:failureType == :failureType[Row()]
看看您最終會得到什麼(您正在將故障類型的當前行值與故障類型的當前行值進行比較,只是使用不同的語法,幾乎總是 1)。
回覆:JMP 相當於 Excel 的 COUNTIF 函數其他選項是 Col Number()
Col Number(:FailureType, :FailureType)
回覆:JMP 相當於 Excel 的 COUNTIF 函數這些回應直接回答了您有關 Excel 等功能的問題。您也可以使用「表」>「摘要」、「分析」>「製表」和「圖形」>「圖形產生器」進行摘要,而不使用公式列(如果您要這樣做)。
回覆:JMP 相當於 Excel 的 COUNTIF 函數這個公式似乎也有效:
Names Default to Here(1);
n1 = :failureType;
Col Sum( :failureType == n1 )
似乎在 Col Sum 函數中,它期望迭代列表,類似於在 python 中對壓縮變數執行 for 循環,但在第二行中,它只是從當前行獲取 :failureType 的值。這些隱式行為非常有幫助/有用,但前提是使用者了解它們是如何運作的。
回覆:JMP 相當於 Excel 的 COUNTIF 函數哇。有點令人驚訝。我沒想到它會這樣運作。
你是怎麼發現的?
Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "ColSum1",
Formula(
Col Sum( :age == 12 );
)
);
New Column( "ColSum2",
Formula(
twelve = 12;
Col Sum( :age == twelve );
)
);
New Column( "ColSum3",
Formula(
myAGE = :age;
Col Sum( :age == myAGE );
)
);
New Column( "ColSum4",
Formula(
myAGE = :age;
myname= :name;
Col Sum( show(myname,myAge,:name,:age,"-");:age == myAGE );
)
);
回覆:JMP 相當於 Excel 的 COUNTIF 函數相關貼文有些相似之處: Countif equals?
但沒有@BHarris的魔力:)
回覆:JMP 相當於 Excel 的 COUNTIF 函數儘管它看起來確實有效,但我不會使用它(我認為如果它要求您將 :failureType 作為 byvar 應該沒問題)。我認為這是某種意外行為(甚至比使用 1 還要多,根據 JMP 支持,這也不應該被允許,但讓我們希望 JMP 永遠不會打破這一點
使在 Set Each Value 中使用公式表達式以及在 Col 統計公式中使用表達式作為第一個參數支援的行為)。
您可以將其報告給 JMP 支援並嘗試查看他們是否可以提供有關其工作原理的技術解釋。您也可以嘗試以類似的方式使用其他比較

回覆:JMP 相當於 Excel 的 COUNTIF 函數@hogi它可能不像看起來那麼神奇——Col Sum的第一個參數是一個表達式,在這種情況下,因為n1 是預先計算的(可能由於上下文而被設定為當前行的值),並且==表達式似乎傳回 1 或 0,因此它只是將一堆 1 相加,其中列值等於 n1,否則為 0。
對我來說有點神奇的是,有時在列公式中,當輸入“:columnName”時,JMP 會迭代列中的行,而其他時候它只從當前行的該列中提取值。自從其他線程的討論以來,這對我來說一直很神秘。
我猜想 Col Number() 函數是在這種情況下最合適使用的函數,可能比這更乾淨地快取。
坦白說,我不知道 Col Number() 的存在。我成年後的大部分時間都在 Excel 中度過,因此我確實希望在某個地方有 Excel 函數到 JMP 函數的映射。
回覆:JMP 相當於 Excel 的 COUNTIF 函數New Column( "ColSum4",
Formula(
myAGE = :age;
myname= :name;
Col Sum( show(myname,myAge,:name,:age,"-");:age == myAGE );
)
);
很能說明問題。 Col 累積的行為與我想像的有點不同。
我猜 Col Sum 會評估一次爭論,然後根據 groupBy 對結果進行分組/收集。
但實際上:
對每一行計算公式,RWx 行總共計算 40 次。
在每次迭代中,Col Sum 都會對每行 RWy 的參數求值 40 次。
我猜它會嘗試快取結果,如果可以確定結果相同,則不會再次評估其他 RWx 的參數。
但在 Show() 或 :age = myAGE 的情況下,它必須一次又一次地評估。
-> 總共 40 x 40 次。
因此,例如對於行 RWx = 3 (myName = Jane) ,它會計算參數 40 次。
對於 40 個 RWy 中的 8 個,:age == myAge 結果為 1。
因此,第 40 行的列總和為 3。
回覆:JMP 相當於 Excel 的 COUNTIF 函數
@jthi寫道:
儘管它看起來確實有效,但我不會使用它(我認為如果它要求您將 :failureType 作為 byvar 應該沒問題)。我認為這是某種意外行為(甚至比使用 1 還要多,根據 JMP 支持,這也不應該被允許,但讓我們希望 JMP 永遠不會打破這一點
使在 Set Each Value 中使用公式表達式以及在 Col 統計公式中使用表達式作為第一個參數支援的行為)。
如果功能被記錄下來,我也會感到更有信心 - 以某種方式防止突然刪除...
JMP 必須確定是否可以快取結果。誰知道其中的邏輯?
在這裡,JMP 認為可以使用快取資料:
t0 = hptime();
New Column( "test",
Formula(
wait(0.1);
Col Sum( hp time() )
),
);
current data table() << run formulas();
show((hptime()-t0)/1000000)
回覆:JMP 相當於 Excel 的 COUNTIF 函數@BHarris
@BHarris寫道:
有時在列公式中,當輸入「:columnName」時,JMP 會迭代列中的行
你能舉個例子嗎?
回覆:JMP 相當於 Excel 的 COUNTIF 函數當然,打開 BigClass.jmp 並添加包含以下公式的列:
列總和(:身高 *:體重,:性別)