ExcelのCOUNTIF関数に相当するJMP私は次のような Excel タイプの動作を模倣しようとしています:
| | A | B |
| 1 | 失敗タイプ | このタイプの失敗数 |
| 2 | 1 1 1 | =countif($a$2:$a$999,a2) |
| 3 | f2 | =countif($a$2:$a$999,a3) |
| 4 | 1 1 1 | =countif($a$2:$a$999,a4) |
| 5 | 1 1 1 | =countif($a$2:$a$999,a5) |
| 6 | f2 | =countif($a$2:$a$999,a6) |
| ... | ... | ... |
... JMP で。これは列の式として可能ですか?
「Col Sum( :failureType == :failureType[ Row() ] )」を試してみましたが、うまくいきません。理由もわかりません。「:ColumnName」は単一の値を返す場合もあれば、列全体のエントリを返して自動的にループする場合もあります。スクリプト インデックスなどから、どちらが実行されるかを判別する方法はありますか?
基本的なデータ分析とモデリングRe: Excel の COUNTIF 関数に相当する JMP
おそらく、失敗タイプ別の列合計が 1 でしょうか?
Col Sum(1, :FailureType)
ここで列6には式Col Sum(1, :age)があります。

Re: Excel の COUNTIF 関数に相当する JMPはい、おそらくうまくいくでしょう。
Col Sum(...) が機能しないのはなぜですか? Row() も各ステップで内部的に更新されていますか?
Re: Excel の COUNTIF 関数に相当する JMPRow()だけで列を作成すると、何が返されるかがわかります。

同じことが
:failureType[Row()]
そして
:failureType
そして最後に
:failureType == :failureType[Row()]
最終的に何が得られるかを確認します (失敗タイプの現在の行の値と失敗タイプの現在の行の値を、異なる構文のみで比較します。ほとんどの場合、1 になります)。
Re: Excel の COUNTIF 関数に相当する JMP他のオプションはCol Number()です
Col Number(:FailureType, :FailureType)
Re: Excel の COUNTIF 関数に相当する JMPこれらの回答は、Excel のように動作する関数に関する質問に直接答えています。目的が数式列を使用せずに要約を作成する場合は、表 > 概要、分析 > 表の作成、グラフ > グラフ ビルダーを使用することもできます。
Re: Excel の COUNTIF 関数に相当する JMPこの式も機能するようです:
Names Default to Here(1);
n1 = :failureType;
Col Sum( :failureType == n1 )
Col Sum 関数内では、リストを反復処理することが想定されているようです。これは、圧縮された変数に対して Python の for ループを実行するのと似ていますが、2 行目では、現在の行から :failureType の値を取得するだけです。このような暗黙の動作は非常に役に立ちますが、ユーザーがその動作を理解している場合に限ります。
Re: Excel の COUNTIF 関数に相当する JMPわあ。ちょっと驚きました。こんなふうにうまくいくとは思っていませんでした。
どうやって知ったのですか?
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 );
)
);
Re: Excel の COUNTIF 関数に相当する JMPいくつかの類似点がある関連投稿: Countif と同等ですか?
ただし、 @BHarrisの魔法はなし : )
Re: Excel の COUNTIF 関数に相当する JMP動作しているように見えますが、私は使用しません(:failureType を byvar として指定する必要がある場合は問題ないと思います)。これは何らかの意図しない動作だと思います(JMP サポートによると 1 の使用も許可されていないはずですが、JMP がそれを破らないことを願っています)。
Set Each Value で数式表現を使用し、Col 統計数式の最初の引数として表現を使用する動作がサポートされるようにします。
JMPサポートに報告して、なぜそのように動作するのか技術的な説明をもらえるかどうか確認してみてください。また、同様の方法で他の比較を試すこともできます。

Re: Excel の COUNTIF 関数に相当する JMP@hogi見た目ほど魔法のようなことではないかもしれません。Col Sum の最初の引数は式であり、この場合、n1 は事前に計算されており (コンテキストにより現在の行の値に設定されている可能性が高い)、== 式は 1 または 0 を返すように見えるため、列の値が n1 に等しい場合は 1 の集合を単純に加算し、そうでない場合は 0 を加算するだけです。
私にとって少し不思議なのは、列の式で「:columnName」と入力すると、JMP が列内の行を反復処理する場合と、現在の行のその列からのみ値を取得する場合があることです。これは、他のスレッドでの議論以来、私にとって不可解なことでした。
この場合、Col Number() 関数を使用するのが最も適切だと思います。おそらく、これよりもきれいにキャッシュされるでしょう。
正直に言うと、Col Number() が存在することを知りませんでした。私は成人してからほとんどの時間を Excel で過ごしてきたので、Excel 関数と JMP 関数のマッピングがどこかにあるといいのですが。
Re: Excel の COUNTIF 関数に相当する JMPNew 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回×40回。
したがって、たとえば行 RWx = 3 (myName = Jane) の場合、引数は 40 回評価されます。
また、40 個の RWy のうち 8 個については、:age == myAge の結果は 1 になります。したがって、行 3 の Col Sum は 8 になります。
したがって、行 40 の Col Sum は 3 になります。
Re: Excel の COUNTIF 関数に相当する JMP
@jthi は次のように書きました:
動作しているように見えますが、私は使用しません(:failureType を byvar として指定する必要がある場合は問題ないと思います)。これは何らかの意図しない動作だと思います(JMP サポートによると 1 の使用も許可されていないはずですが、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)
Re: Excel の COUNTIF 関数に相当する JMP@Bハリス
@Bハリス wrote:
列の式では、":columnName" と入力すると、JMP は列内の行を反復処理することがあります。
例を挙げていただけますか?
Re: Excel の COUNTIF 関数に相当する JMPはい、BigClass.jmp を開いて、次の数式を含む列を追加します。
列の合計( :身長 * :体重、:性別 )