ビニング用のJSLスクリプトやあ、
1248 行 2435 列の疎行列があります。 最初の列は CustomerID で、残りは各顧客が注文した数量を値として持つ製品です。 各列には異なる範囲があります。 20 パーセンタイルでポイントをカットして、列の値を 1 ~ 5 に標準化したいと考えています。 列の数が少ない場合は、インタラクティブなビニング アドインが役立つことがわかりました。 私は JMP を初めて使用しますが、これを実現するための JSL スクリプトを手伝ってくれる人がいれば幸いです。 ビニングでは欠損値を除外する必要があります。
参考までに私のデータ表を添付します。 前もって感謝します。
よろしく、
タラ

Re: ビニング用のJSLスクリプトありがとうジム。 これらの列名を手動で再コーディングします。 あなたの助けをもう一度ありがとう!.
Re: ビニング用のJSLスクリプト注:別の問題を見つけました....同じ問題がより複雑です。一部の列には名前に二重引用符が含まれています....これにより、スクリプトでエラーが発生します........
これは回避できます...しかし、最も簡単な解決策は、名前の二重引用符を(手動で)単一引用符に変更し、以下に示す変更を加えてスクリプトを実行することだと思います。
これは一般的な問題であり、この問題を保護する必要がありました。
7 番目の列の名前は次のとおりです。
BONNE JAM JAR T-LIGHT ホルダー
保護されていない限り、JMP は名前を 1 つの列名としてではなく、2 つの列名として解釈します。
ボンヌジャムジャーT
と
ライトホルダー
2 つの名前の間にマイナス記号「-」があるため、JMP は一方を他方から減算しようとします。このような複雑な列名から保護するために、JMP には :Name() という関数があります。したがって、コード内の次の行を置き換えると:
Expr( __col__ ), Parse( ":" || Char( Column( dt, i ) << get name ) )
と:
Expr( __col__ ), Parse( ":Name(\!"" || Char( Column( dt, i ) << get name ) || "\!")")
それが動作します
Re: ビニング用のJSLスクリプトこんにちはジム、
お時間をいただき、ご返信いただきありがとうございます。 スクリプトは、最初の 7 列で正常に機能しました。 なぜそれ以上進まないのか理解できませんでした。 参考までにjmpファイルを添付しておきます。スクリプトに小さな変更を加えました: dt = Current Data Table (); 、i = 2 および _col_[RowP80_100] = 5。 休みはそのまま。
ありがとう
タラ
Re: ビニング用のJSLスクリプトこれは、あなたが望むことをするサンプルスクリプトです。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Semiconductor Capability.jmp" );
For( i = 5, i <= N Cols( dt ), i++,
Eval(
Substitute(
Expr(
RowsP0_20 = dt << get rows where( __col__ <= Col Quantile( __col__, .2 ) );
RowsP20_40 = dt << get rows where(
__col__ > Col Quantile( __col__, .2 ) & __col__ <=
Col Quantile( __col__, .4 )
);
RowsP40_60 = dt << get rows where(
__col__ > Col Quantile( __col__, .4 ) & __col__ <=
Col Quantile( __col__, .6 )
);
RowsP60_80 = dt << get rows where(
__col__ > Col Quantile( __col__, .6 ) & __col__ <=
Col Quantile( __col__, .8 )
);
RowsP80_100 = dt << get rows where( __col__ > Col Quantile( __col__, .8 ) );
__col__[RowsP0_20] = 1;
__col__[RowsP20_40] = 2;
__col__[RowsP40_60] = 3;
__col__[RowsP60_80] = 4;
__col__[RowsP80_100] = 1;
),
Expr( __col__ ), Parse( ":" || Char( Column( dt, i ) << get name ) )
)
)
);
スクリプトは必要以上に複雑です。つまり、As Column() を使用して、列を指すスクリプト内の各ポイントを置き換えることもできましたが、この計算オーバーヘッドにより、コードの実行が 1 列あたり約 1 分処理に費やされました。コードの代替バージョンでは、すべてが数秒で処理されます。