同じ値の列を削除するいくつかのパラメータを指定してモデルを実行すると問題が発生します。モデルを実行する前にデータのクリーニングを行いたいのですが、同じ値を持つ列を素早く削除する方法はありますか?JSLなど、適切な方法があれば教えてください。
データのブレンドとクリーンアップRe: 同じ値を持つ列を削除する以下の TXNELSON の投稿は JMPv13.2.1 で動作しました。Re: 同じ値を持つ列を削除するうまくいきました!!! ありがとう。Re: 同じ値を持つ列を削除する私はこれをJMP 13.2.1で実行しましたが、うまくいきました。必要なのは、コード内の行を削除することだけです。
dt << select columns(to_delete_lst);
dt << delete columns;
そしてそれを
dt << delete columns( to_delete_lst);
Re: 同じ値を持つ列を削除する申し訳ありませんが、お答えできません。
このコードは私のコンピューターのWin10でJMP 15で問題なく動作します。
最後の 2 つのステップは、JMP 13 ですでに実装されているはずの非常に基本的なコマンドです (ただし、確認できません)。
両方のステップを実行できますか?
別々に次々に実行しますか? たとえば、エディターでスクリプト行をマークし、再生ボタンを押します。
問題は正確にはどこにあるのでしょうか?
Re: 同じ値を持つ列を削除するこのコードを実行すると、重複する列は正しく識別されますが、実際には削除されません。ログにはエラーは表示されません。
「高さはheight_copyに等しい」
"重みはweight_copyに等しい"
to_delete_lst = {7, 6};
スクリプト可能[]
私はv13.2.1を実行しています
Re: 同じ値を持つ列を削除するこんにちは、
こちらの投稿から判断すると、「同じ値」という記述を理解していなかったようです。各行において列1と列2が等しいと解釈していましたが、各行で同一の値を持つ列(つまり標準偏差0)を指しているのではないかと推測します。正しいでしょうか?
もしそうなら、私か私よりも経験豊富な誰かが、比較的短いスクリプトを提供できるはずです。
最高、
TSRe: 同じ値を持つ列を削除するこんにちは、ネルソン
アドバイスありがとうございます。しかし、回答のスクリーニングには処理時間が長すぎて理想的ではありません。45秒も実行していますが、まだ処理が半分も終わっていません。

Re: 同じ値を持つ列を削除するこれを別の方法で実行する方法をご紹介します。一致するデータの指標としてRSquareを使用します。
Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( continuous );
obj = dt <<
Response Screening(
Y( Eval( colNames ) ),
X( Eval( colNames ) )
);
dtCalc = obj << get PValues;
dtCalc << select where(Round(:RSquare,4) != 1 | :X == :Y );
try( dtCAlc << delete rows );
dtCompare = dtCalc << subset( selected rows(0), columns("X","Y"));
close(dtCalc,nosave);
for each row(
If(:X > :Y,
hold=:X;
:X = :Y;
:Y = hold;
)
);
dtFinal = dtCompare << Summary(
Group( :X, :Y ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
close( dtCompare, nosave );
Re: 同じ値を持つ列を削除するGeorgさん、コラムビューアのアイデアをありがとう。
列ビューア -> 概要 -> テーブルを stdev = 0 で並べ替えて、これを実行しようと思います。その後、列を削除できます。Re: 同じ値を持つ列を削除する私もよく分かりません:)
つまり、必要なものをより具体的にする必要があるということです。
大きなテーブルの値を調べたいだけなら、列ビューアを使うといいでしょう。
列 -> 列ビューア
そこで、大きな表の列を簡単に比較できます。
Re: 同じ値を持つ列を削除するJSLをありがとうございます。でも、それが私の求めている機能を果たすかどうかは分かりません。Re: 同じ値を持つ列を削除するこれは列を削除します:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// make some copies of columns
dt << New Column( "weight_copy", set each value( :weight ) );
dt << New Column( "height_copy", set each value( :height ) );
to_delete_lst = {};
For( i = 1, i < N Col( dt ), i++,
For( j = i + 1, j <= N Col( dt ), j++,
If( (Column( i ) << get data type) == (Column( j ) << get data type),
// all celles are equal ?
If( Mean( (Column( i ) << get values) == (Column( j ) << get values) ) == 1,
Print( (Column( i ) << get name) || " equal to " || (Column( j ) << get name) );
insert into(to_delete_lst, j);
);
);
)
);
// show list of equals
Show(to_delete_lst);
wait(3);
dt << select columns(to_delete_lst);
dt << delete columns;
Re: 同じ値を持つ列を削除する行を削除したいのではなく、同じ値を持つ列を削除したいのです。Re: 同じ値を持つ列を削除する正確に理解できたか分かりませんが、
モデリングでは重要と思われる列を選択できるため、列を削除する必要はありません。
列に同じ値がある行をいくつか削除しますか?
以下にそのコードを示します。
それ以外の場合は、必要なものをもっと詳しく説明してください。例があると非常に役立つ場合があります。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
wait(3);
dt << Select duplicate rows( Match( :age ) );
dt << delete rows;