列内の条件を持つ最初の要素を見つけるこんにちは、グループとスコアの 2 つの列を持つデータがあり、最初と呼ばれる 3 番目の列を計算したいと思います。これは、「10000000000 ではないグループごとの最初のスコアを返します。したがって、このサンプル データでは、グループ a = 0、グループb =53. グループ c には 10000000000 しか含まれていないため、何も表示されません。
誰かがこの列の jmp 数式を手伝ってくれますか? どうもありがとう!
| グループ | スコア | 最初 |
| a | 10000000000 | 0 |
| a | 0 | 0 |
| a | 100 | 0 |
| a | 10000000000 | 0 |
| a | 8 | 0 |
| a | 10000000000 | 0 |
| a | 10000000000 | 0 |
| a | 10000000000 | 0 |
| b | 53 | 53 |
| b | 10000000000 | 53 |
| b | 1 | 53 |
| c | 10000000000 | . |
| c | 10000000000 | . |
| c | 10000000000 | . |
分析Re: 列内の条件付きの最初の要素を見つけるここでは、問題を解決するための別のアプローチを示します。このアプローチはスクリプトです。以前の単一の数式列アプローチよりも効率的である必要があります。まず最初の値を見つけて新しいテーブルに抽出し、更新プラットフォームを使用して値を元のデータ テーブルにマージします。
names default to here(1);
dt=current data table();
// Create a column that finds the first values
dt<<NEW column=""></NEW>
Re: 列内の条件付きの最初の要素を見つけるそれはたくさんの行です。 この数式は、必要なメモリが少ない場合があります。 最初の値 ≠ 10000000000 は常に 10000000000 未満であると想定しています。
If(Col Min(:score, :group) == 10000000000,
.,
Col Min(
:score[Col Min(Row(), :group, :score == 10000000000)],
:group
)
)
Re: 列内の条件付きの最初の要素を見つけるジムありがとう! 数式をデータに直接貼り付けて、再度確認しました。上位の 7000 行までは機能しましたが、それ以降はすべて「.」であり、10000000 ではない最初の数値は表示されません。 数式を入力すると、長時間実行されたので、esc を押して jmp のフリーズを解除する必要がありました。それがこれを引き起こすのですか? 私は完全に約7000k行を持っています。Re: 列内の条件付きの最初の要素を見つける数式のスクリーン ダンプでは、列を正しく参照しているかどうかを確認できません。つまり、列名の前に「:」を配置していますが、curgroup と値の前には配置していませんか?
どのようなエラー メッセージが表示されますか?
正しく動作していないと言うとき、それはどういう意味ですか?正しい値が得られませんか、それとも結果が得られませんか?
サンプル データ テーブルに、私の数式がデータ テーブルに適用された Jim's Formula という列が添付されています。これは、作成しようとしているものと比較するための数式の作業バージョンを用意できるようにするためです。
Re: 列内の条件付きの最初の要素を見つけるこんにちはジム、答えてくれてありがとう。 数式に貼り付けて列名を置き換えましたが、正しい答えが得られませんでした。 下のスクリーンショットを確認するのを手伝ってもらえますか? ありがとう。

Re: 列内の条件付きの最初の要素を見つける式の書き方はこんな感じ
curgroup = :group;
value = :score[Min(
Current Data Table() << get rows where(
:group == curgroup & :score != 10000000000
)
)];