すべての列で最も高い 3 つのセル値を選択する方法は?「予測」などの単語を含むすべての列について、5 より大きいか 4.5 より大きい上位 3 つのセル値を抽出したい (5 より大きい 3 つの数値を取得した場合、4.5 より大きい数値は必要ない) リスト内。 さらに、5 から最も離れているものを選択し、対応するセル値を生のテーブルで非表示にします。 たとえば、以下の表の例では、次のようになります。
予測 B 列には、6.6、5.3、および 5 を格納します。 列 B の予測 B ナットに隣接するセル、つまりセル値 65 を非表示にします。
私のコードは、文字列「Prediction」を含む列を選択します。
dt = Current Data Table();
a = "Prediction";
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
If( Contains( col[i], a ), )
);
5 または 4.5 より大きい上位 3 つのセルを選択するにはどうすればよいですか? 迅速に対応してくださった JMP コミュニティに感謝します。
Re: すべての列の上位 3 つのセル値@txnelson正規表現を使用してそれを行うことができます: match = regex(colstrings, "[{,]\s*([^{,}]*Prediction[^{,}]*)[,}]", "\1");
Re: すべての列の上位 3 つのセル値特定の文字列を指定するには、Contains() 関数の代わりに Loc() 関数を使用します。
Re: すべての列の上位 3 つのセル値また、B と Prediction B のような列を一致させる方法はありますか? ありがとう
Re: すべての列の上位 3 つのセル値わかりました、助けてくれてありがとう。@txnelson @uday_guntupalli
Re: すべての列の上位 3 つのセル値Missing に設定されたセル値を直接取り消す方法はありません。それが理由です@dale_lehman新しい列の使用を提案し、 @uday_guntupalliデータの新しいサブセットを作成してから、サブセットを変更することをお勧めします。
Re: すべての列の上位 3 つのセル値@エイミー、
個々のセルを含めようとするのではなく、いつでもテーブルをサブセット化できます。
Re: すべての列の上位 3 つのセル値@エイミー、
dt = Current Data Table();
SearchTerm = "Prediction";
ColNames = dt << Get Column Names("String");
DesRowsList = {};
for(i = 1, i <= N Cols(dt), i++,
If(Contains(ColNames[i],SearchTerm),
SR = dt << Select Where(As Column(dt,ColNames[i]) > 4.5) << Get Selected Rows;
Insert Into(DesRowsList,SR);
dt << Clear Select;
);
);これにより、条件に一致する行を 1 つのリストにまとめることができます。 そこから、それぞれのケースで上位 3 つを抽出できるはずです。 あなたの質問に答えるために、私は細胞だけを除外することを認識していません
Re: すべての列の上位 3 つのセル値@txnelsonセルの値を欠損値/非表示/セルの値を除外するように設定した後、データ テーブルでいくつかのモデルを実行し、そのままにしておくか、セルに値を再度含めるかを決定します。 これは可能ですか?
Re: すべての列の上位 3 つのセル値JMP では、個々のセルを「除外」するのではなく、セルの値を「欠損値」に設定します。欠損値の記号は「.」です。
列が文字データ型の場合、値を "" に設定します。
Re: すべての列の上位 3 つのセル値行全体を除外したくありません。 セルのみを除外したい。 たとえば、私が投稿した表では、列「予測 B」の値が 6.6 のセルに隣接する列「B」のセルを除外できるようにしたいと考えています。 正規表現を使用してそのような文字列を照合する方法を理解するのにまだ苦労しています。 私は 2 つのリストを作成しました。1 つは列名に「予測」という単語が含まれており、もう 1 つは含まれていません。 また、そのようなタイプのテーブルで最適に機能すると思われる関数を教えていただければ幸いです。 私はJSLを使い始めたばかりで、まだ苦労しています。 助けてくれてありがとう。@uday_guntupalli
PS:それは、JSL の列から単一のセルを除外する方法がないということですか?
Re: すべての列の上位 3 つのセル値@エイミー、
行全体またはその列の行のみを除外しようとしていますか? 私が尋ねる理由は、次を使用して行全体を除外できると確信しています。
dt << Exclude ;
ただし、列の行を除外したいだけなら、それは不可能だと思います。 それでは、行番号を変数に格納してから、それらの行を除外してみませんか?
Re: すべての列の上位 3 つのセル値これは、分析から削除する必要があるデータを確認する方法であるため、同じ方法で行う必要があります。 本当に感謝しています。 @dale_lehman
Re: すべての列の上位 3 つのセル値私はあまりスクリプトを書いていないので、他の人に手伝ってもらいます。これらの操作を行った後に行を除外したい理由がよくわからないということだけを言います - それらの行を除外するか、欠落に設定して新しい列を作成する方が良いようです。スクリプトは比較的簡単だと思いますが、元のデータを上書きするという考えは好きではありません (それがあなたが提案している場合)。
Re: すべての列の上位 3 つのセル値@dale_lehman助けてくれてありがとう。 すべての列の最大値を選択するようにスクリプトを更新し、それを「val」変数に保存しました。 最初の列の最大数のセルを除外し、いくつかの操作を実行してから、2 番目の列の最大数のセルを除外する方法を知っていますか?
dt = Current Data Table();
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
Col1 = Column( dt, i );
If( Contains( col[i], "Prediction" ),
Show( col[i] );
val = Abs( Col Max( Col1 ) );
Show( val );
MaxRow = dt << get rows where( As Column( Col1 ) == Abs( Col Max( Col1 ) ) );
);
);
Re: すべての列の上位 3 つのセル値あなたが指定したように、列 B の予測を使用しようとして、あなたの例を添付しました。これがまさにあなたが望むものかどうかはわかりませんが、近いと思います。
Re: すべての列の上位 3 つのセル値@dale_lehmanさて、列ランク関数の使い方についてはあまり見つけられませんでした。 最大値を 1 つ抽出することはできますが、上位 3 つをどのように進めればよいかまだわかりません。
Re: すべての列の上位 3 つのセル値列ランク関数 (およびいくつかの IF ステートメント) がうまくいくかもしれません。