効率的な行状態コーディングこんにちは。JSL で行の状態を変更する最速の方法を見つけようとしています。 get rows where() よりも遅いため、通常は行の選択を避けるようにしていますが、行列または行のリストを使用して行の状態を変更する方法がわかりません。 状態を変更するには行を選択する必要がありますか?
少し関連する質問: カラー パレットはスクリプト可能ですか? 「colorbox()」表示ボックスが表示されますが、スクリプト インデックスによれば、プラットフォームからのみアクセス可能であることが示されています。 いくつかの回避策を見つけることができたので、必ずしも必要ではありません。 これが何を意味するのかの例を、ここのコードの下に示します。
ありがとう、
マイク
//Clear Log();
Names Default To Here( 1 );
dt = open( "$SAMPLE_DATA\Big Class.jmp");
//get rows where; not sure what to do with this
myRows = dt << get rows where(:height == 63);
// use select where works but could be slower
dt << select where(:height == 63);
dt << exclude(1);
dt << colors("Red");カラーパレット、ユーザー設定の例:

Re: 効率的な行状態コーディングはい、私はそのことを忘れがちなので、JMP のオンライン ヘルプを確認しているときに時々思い出します。おそらく、除外された行を処理し、(実行ではなくコード的に)仕様制限を上回る/下回る行を迅速に取得するという便宜のために、「select where()」を使用し、後で「rows where()」を取得しただけでしょう。 1と0を含むexcluded()の別の列行列を取得して、単純に乗算できると思います。 欠損値を正しく処理する限り、おそらく問題なく動作し、高速に実行されるでしょう。
Re: 効率的な行状態コーディング私も半導体業界で働いていましたが、大規模なアプリケーションの多くでは、データ テーブル関数を扱うよりも、パラメトリック データを行列に移動し、さまざまな行列関数を使用する方がはるかに高速な方法であることがわかりました。
Re: 効率的な行状態コーディングありがとうジム。 「選択」よりも「取得」を選択する習慣は、VBA と JSL の両方で何年にもわたってスクリプトの結果が遅くなったために根付いていますが、行だけでなく各列を反復処理する必要があるケースを主に考えていると思います。 。
ここでは、半導体テスト データに関するいくつかのシナリオを示します。各行は実稼働環境でテストされるデバイスであり、各列 (インデックス列の後) はデバイスのパラメトリック テストです。 各列には仕様制限がプロパティとして保存されています。1 つのスクリプトがループして、列ごとに収量、ハイサイドとローサイドのフォールアウトなどを決定します (他にもたくさんありますが、それは無関係です)。通常、半導体データでは最初のフェイルで停止してテストされるため、フェイルの右側の列が欠落している可能性があります。 データが失敗時に継続してテストされる場合は、「失敗時に停止」に変換するとよいでしょう。 そこで、stop-on-first-fail データに変換するスクリプトも用意しました。どちらの場合も、get rows where() と select where() に切り替えることで、スクリプトの実行時間が大幅に短縮されました。 テーブルが非表示の場合は、select where() を使用した方が高速になる可能性があります。これはチェックしていません。
ただし、行の状態については 1 回ループするだけなので、一歩下がって考えてみると、おそらくそれほど悪くはありません。
これは、失敗時停止スクリプトの 2 つのスクリプト バージョンのスクリーンショットです。 この変更により、実行時間に大きな違いが生じました。
そして、まったく別のトピックは、私がそれを文字列として解析する理由かもしれません。 もう一度戻ってこれを確認する必要がありますが、何年も前に文字列として解析する方がはるかに高速であることに気づきましたが、それはまだ select where() ステートメントがあった頃のことかもしれません。

Re: 効率的な行状態コーディングカラーパレットの質問に対する答えはありませんが、Select Where と Get Rows Where を簡単に実行してみたところ、ほとんど違いが見つかりませんでした。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
start = HP Time();
For( i = 1, i <= N Rows( dt ), i++,
dt << select where( :NPN1 > :npn1[i] )
);
Show( "select where", Format( (HP Time() - start) / 100, "Hr:m:s" ) );
start = HP Time();
For( i = 1, i <= N Rows( dt ), i++,
dt << select where( :NPN1 > :npn1[i] )
);
Show( "get rows", Format( (HP Time() - start) / 100, "Hr:m:s" ) );
そして結果が得られました:
"どこを選択";= "2:51:55";
"行を取得"; = "2:50:40";