<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有兩個jmp數據表,我需要能夠相互評估,而無需在JSL中加入它們(它們都是大表)。
第一個是由分配了X和Y坐標的不同項組成的表。
第二個表是一個主參考表,其中僅包含點可以位於(在同一坐標系內)的邊界框/分區的左下角和右上角的XY坐標。我需要能夠使用生成的XY坐標表來搜索參考表,以確定每個項目位於哪個邊界框內。
我可以對兩個數據表進行笛卡爾連接,並使用兩個表的(xmin_ref
有沒有一個函數/方法可以讓我在不進行笛卡爾連接的情況下做我需要的東西?
謝謝!
這非常有用!非常感謝。即使在大型數據集上,我也需要在它上面運行它,就像它們什麼都沒有一樣。
好極了!
這是一次蠻力嘗試。 性能是1000 xy行的即時性,100,000 xy行的17秒,以及100萬xy行的159秒。 可以使用“in polygon”函數獲得加速。
// XY值的小表
xydt = 新表 ( “xy數據” ,添加行 ( 10 ) ,
新欄目 ( “X” ,數字 ,連續 ,格式 ( “最好” , 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 ] ) ) ,
新欄目 ( “基}” ,數字 ,連續 ,格式 ( “最好” , 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 ] ) ) ,
新欄目 ( “框” ,字符 ,公稱 ,
設定值 (
{ “一個” , “B” , “C” , “d” , “E” , “F” , “G” , “H” , “一世” , “J” , “K” , “L” , “M” , “N” ,
“O” , “P” , “Q” , “R” , “S” , “T” , “U” , “V” , “W” , “X” , “Y” , “Z” } ) )
) ;
start_dt = 今天 () ;
對於 ( 一世 = 1 ,一世 <= NROWS ( xydt ) ,一世 ++,
XVAL = xydt : X [ 一世 ] ;
利用yval = xydt : ÿ [ 一世 ] ;
ref_list = refdt << 得到行在哪裡 ( : XLL <= XVAL & : 基] <= 利用yval &
XVAL < : xur & 利用yval < : 尤爾 ) ;
//看看我們是否找到了匹配項
如果 ( NROWS ( 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) ,
頻率( “沒有” ) ,
重量( “沒有” ) ,
統計列名稱格式( “列統計” ) ,
鏈接到原始數據表( 0 )
) ;
DT << 新欄目 ( “意思” ) ;
DT << 新欄目 ( “中位數” ) ;
對於 ( 一世 = 1 ,一世 <= N行 (dt) ,一世 ++,
lookupRow = (抬頭 << 得到行在哪裡 ( 抬頭 : lot_id == DT : lot_id
& 抬頭 : 晶圓 == DT : 晶圓 ))[ 1 ] ;
DT : 意思 = 抬頭 : NPN1意味著[lookupRow] ;
DT : 中位數 = 抬頭 : NPN1中位數[lookupRow] ;
) ;