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