テーブル式で jmp スクリプトを使用してブール論理を実行できませんこんにちは、
中心からの半径距離が 100 mm を超えるポイントを選択して非表示にし、除外する簡単なスクリプトを実行しようとしています。
デバッグを簡単にするために、これを 2 つのスクリプトに分割しました。最初のスクリプトは、放射状距離 Radial = (x^2 + y^2)^(1/2) の式を含む列を生成し、2 番目のスクリプトはこの式を評価して、Radial > 100 の行を選択して非表示にします。
残念ながら、これは機能しません。非常に奇妙な理由により、この数式の評価は特定の値までしか機能しません。Radial > (30 を超える値) はすべての行を選択します。
解決策は 2 つ考えられます。
1) 数式自体ではなく、ラジアル列に値を入力します。(値は適切に評価されますが、数式は評価されません)。これを行う方法がわかりません。
2) 問題を理解して修正し、30 より大きい値に対して数式を評価できるようにします。
スクリプトによる回答でも、インタラクティブな説明でもどちらでも構いません。この問題を解決し、そこから学びたいと思います。
ありがとう!
デイブ
// script for creating the Radial column<BR />dt1 = Current Data Table ();
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));<BR /><BR />// script for evaluating the Radial formula<BR />dt =Current Data Table();<BR />dt << Clear Row States; <BR />dt << Select where(Radial < 100);<BR />dt << hide and exclude;<BR />
データのブレンドとクリーンアップRe: テーブル数式で jmp スクリプトを使用してブール論理を実行できません私は少し推測していますが、Radial vs Radial 1 の問題は、列変数を正しくスコープしていないことだと思います。あなたの声明では
dt << Select where((Radial 1> 100) | (Radial 1< 30) | (Pits Only > mf));
列名 :Radial 1 および :Pits Only の前に「:」を配置する必要があります。スクリプトが Radial 1 で動作する理由は、JMP が混乱する可能性がある Radial 1 というメモリ変数がないためです。コーディング試行のある時点で、Radial のメモリ変数を誤って作成したので、指定したときに
dt << Select where((Radial> 100) | (Radial< 30) | (Pits Only > mf));
JMP は、Radial 列の値ではなく、メモリ変数の値で Radial の値を置き換えていました。
Re: テーブル数式で jmp スクリプトを使用してブール論理を実行できません返信ありがとうございます。
スクリプトの最後の行を私のものに貼り付けても、問題は解決しませんでした。 ただし、列の名前を「Radial 1」に変更し、最後に Eval Formula の行を追加することで解決できました。 なぜこれが機能するのかわかりません。 データ テーブルは 15 列の約 1,300 行で、各数値の幅は 10 ~ 12 です。
次の 2 つのスクリプトが機能します。 それらを丸ごと貼り付けています。 他の行は、ピットの深さと分布を評価します。
変更が機能した理由は何ですか? 私は一日中これにいました。
スクリプト 1: 「ピットのみ」列と「半径 1」列を作成する
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Pits Only", Formula (If( :Name( "Height (mm)" ) <= 0, :Name( "Height (mm)"), 0 )) );
dt1 << New Column( "Radial 1", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
dt1 << Eval Formula;
obj = dt1 << Distribution( Column( :Pits Only), Horizontal Layout( 1 ), Count Axis);
スクリプト 2: ピットのみ > 10 またはラジアル 1 > 100 またはラジアル 1 < 30 の行を非表示にして除外する
dt =Current Data Table();
dt << Clear Row States;
win = New Window( "Feature Depth" , <<MODAL> 100) | (Radial 1< 30) | (Pits Only > mf));
dt << hide and exclude;</MODAL>
Re: テーブル数式で jmp スクリプトを使用してブール論理を実行できませんここで問題を再現するのに苦労しています。 テストに使用したスクリプトは次のとおりです。
dt1 = New Table( "Community 416651 Select Where",
Add Rows( 1000000 ),
New Column( "x coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5 ) ),
Set Selected
),
New Column( "y coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5, 20 ) ),
)
);
dt1 << New Column( "Radial",
Formula(
(X coordinate ^ 2 + Y coordinate ^ 2) ^ (1 / 2)
)
);
dt1 << Select where( Radial < 60 );
そのため、スクリプトとデータ テーブルについてもう少し詳しく説明する必要があります。
データ テーブルの大きさは? あなたのスクリプトは他に何をしていますか?
Re: テーブル数式で jmp スクリプトを使用してブール論理を実行できません放射状の列を作成するためのスクリプト
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
放射式を評価するためのスクリプト
dt =Current Data Table();
dt << Clear Row States;
dt << Select where(Radial < 100);
dt << hide and exclude;