<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />私は2つのjmpデータテーブルを持っています。それらはJSLで結合せずにお互いに対して評価できるようにする必要があります。
1つ目は、X座標とY座標が割り当てられているさまざまな項目で構成されるテーブルです。
2番目のテーブルは、(同じ座標系内で)点が配置できる境界ボックス/パーティションの左下隅と右上隅のXY座標のみを含むマスター参照テーブルです。生成されたXY座標の表を使用して参照表を検索し、各項目がどの境界ボックスの内側にあるかを判断する必要があります。
2つのデータテーブルをデカルト結合して、両方のテーブルに対して(xmin_ref
デカルト結合をしなくても必要なことを実行できるようにする関数/メソッドはありますか?
ありがとうございます。
これは素晴らしかった!どうもありがとうございます。大規模なデータセットでも、実行する必要があったとしても、それらは何もないように食べました。
わーい!
これは強引な試みです。 パフォーマンスは1000 xy行で瞬時、100,000 xy行で17秒、100万xy行で159秒でした。 "in polygon"関数を使ってスピードを上げることができます。
// XY値の小さなテーブル
xydt = 新しいテーブル ( 「xyデータ」 、行を追加 ( 10年 ) 、
新しいコラム ( "バツ" 、数値 、連続的 、フォーマット ( "ベスト" 、 12年 ) 、
設定値 (
[ 0.206704897573218 、 0.188453091308474 、 0.402824054239318 、
0.946105436887592 、 0.209207338048145 、 0.783533588517457 、
0.15626378194429 、 0.293116413988173 、 0.0382238682359457 、
0.0646856701932847 ] ) ) 、
新しいコラム ( "y" 、数値 、連続的 、フォーマット ( "ベスト" 、 12年 ) 、
設定値 (
[ 0.258698139106855 、 0.395224047359079 、 0.0813549624290317 、
0.158546321559697 、 0.874619059031829 、 0.787837725598365 、
0.173847715603188 、 0.736063659423962 、 0.782933217706159 、
0.28023144742474 ] ) ) 、
新しいコラム ( "ボックス" 、キャラクター 、公称 )
) ;
//左下と右上の座標表
refdt = 新しいテーブル ( 「ボックスリファレンス」 、行を追加 ( 26 ) 、
新しいコラム ( "xll" 、数値 、連続的 、フォーマット ( "ベスト" 、 12年 ) 、
設定値 (
[ 0 、 0 、 0 、 0 、 0 、 0.2 、 0.2 、 0.2 、 0.2 、 0.2 、 0.4 、 0.4 、 0.4 、 0.4 、 0.4 、 0.4 、
0.6 、 0.6 、 0.6 、 0.8 、 0.8 、 0.8 、 0.9 、 0.9 、 0.9 、 0.9 ] ) ) 、
新しいコラム ( "yll" 、数値 、連続的 、フォーマット ( "ベスト" 、 12年 ) 、
設定値 (
[ 0 、 0.2 、 0.4 、 0.6 、 0.8 、 0.1 、 0.3 、 0.5 、 0.7 、 0.9 、 0.1 、 0.3 、 0.5 、 0.7 、 0.8 、
0.9 、 0.2 、 0.4 、 0.6 、 0.2 、 0.4 、 0.6 、 0.3 、 0.5 、 0.7 、 0.9 ] ) ) 、
新しいコラム ( "xur" 、数値 、連続的 、フォーマット ( "ベスト" 、 12年 ) 、
設定値 (
[ 0.2 、 0.2 、 0.2 、 0.2 、 0.2 、 0.4 、 0.4 、 0.4 、 0.4 、 0.4 、 0.6 、 0.6 、 0.6 、 0.6 、
0.6 、 0.6 、 0.8 、 0.8 、 0.8 、 1 、 1 、 1 、 1 、 1 、 1 、 1 ] ) ) 、
新しいコラム ( 「ゆー」 、数値 、連続的 、フォーマット ( "ベスト" 、 12年 ) 、
設定値 (
[ 0.2 、 0.4 、 0.6 、 0.8 、 1 、 0.3 、 0.5 、 0.7 、 0.9 、 1 、 0.2 、 0.4 、 0.6 、 0.8 、 0.9 、
1 、 0.4 、 0.6 、 0.8 、 0.4 、 0.6 、 0.8 、 0.5 、 0.7 、 0.9 、 1 ] ) ) 、
新しいコラム ( "ボックス" 、キャラクター 、公称 、
設定値 (
{ "A" 、 "B" 、 "C" 、 "D" 、 "E" 、 "F" 、 "G" 、 "H" 、 "私" 、 "J" 、 "K" 、 "L" 、 "M" 、 "N" 、
"O" 、 "P" 、 "Q" 、 "R" 、 "S" 、 "T" 、 「う」 、 "V" 、 "W" 、 "バツ" 、 "Y" 、 "Z" } ) )
) ;
start_dt = 今日 () ;
にとって ( 私 = 1 、私 <= 眉 ( xydt ) 、私 ++、
xval = xydt : バツ [ 私 ] ;
yval = xydt : よ [ 私 ] ;
ref_list = refdt << 行を取得する ( : xll <= xval & : イル <= yval &
xval < : xur & yval < : あなたの ) ;
//一致が見つかったかどうかを確認
もし ( 眉 ( ref_list ) > 0 、
match_row = ref_list [ 1 ] ; //最初のものを取ります。一つだけでなければなりません!
xydt : ボックス [ 私 ] = refdt : ボックス [ match_row ] ;
) ;
) ;
end_dt = 今日 () ;
経過 = end_dt - start_dt ;
印刷する ( 経過 ) ;
ルックアップテーブルからルックアップしてメインテーブルでアクションを実行するスクリプトを添付しました。
テキストとして添付するのではなく、添付ファイルをごめんなさい...しかし、何らかの理由で、このウィンドウに貼り付けることはできません。
再起動後、私は切り取って貼り付けることができました:-)
ここにデフォルトの名前 ( 1 ) ;
dt = 開いた ( "$ SAMPLE_DATA \ Semiconductor Capability.jmp" ) ;
見上げる = dt << 概要 (
グループ( : lot_id 、 : ウェハ) 、
平均 ( : NPN1) 、
中央値( : NPN1) 、
Freq( "無し" ) 、
重量( "無し" ) 、
統計列名の形式( 「列統計」 ) 、
元のデータテーブルへのリンク( 0 )
) ;
dt << 新しいコラム ( "平均" ) ;
dt << 新しいコラム ( 「中央値」 ) ;
にとって ( 私 = 1 、私 <= N行 (dt) 、私 ++、
lookupRow = (見上げる << 行を取得する ( 見上げる : lot_id == dt : lot_id
& 見上げる : ウェーハ == dt : ウェーハ ))[ 1 ] ;
dt : 平均 = 見上げる : NPN1の意味[lookupRow] ;
dt : 中央値 = 見上げる : NPN1中央値[lookupRow] ;
) ;