你好,我叫賈馬爾。 我來自馬來西亞,我真的不了解編寫 JSL 腳本。 所以我的項目是,我從數據晶圓打開的每個表,它都帶有不需要的行和列。 所以我的目標是,只有名稱行參數和其他是新列時數據才會起作用。 另外我必須刪除一些我沒有使用的特定行。 所以我的問題是向腳本專家提出的。 你能寫下如果我選擇任何數據表它會自動刪除紅色標記內的另一行並將行參數作為新列的程序嗎?
P/s 並非每個數據表都有相同的行參數 (44)
將雙變量 JSL 更改為
Bivariate( Y( :Y ), X( :X ), Where( :WAFER_ID == ID_Wafer & :SITE_NO == 1 ) );
Bivariate( Y( :Y ), X( :X ), Where( :WAFER_ID == ID_Wafer & :SITE_NO == 2 ) );
也,
請不要只是剪切/粘貼並使用我提供的 JSL。請仔細閱讀並學習它。
我的天啊。 非常感謝你先生。
我可以尋求一點幫助嗎?
因為數據表的結果必須是雙變量而不是馬賽克。 在我的編碼操作分發之前,我已經復制並粘貼了您的編碼。 但它出現在馬賽克結果中。 那麼你可以參考我的代碼並修復它嗎?
請參考我剛剛上傳的圖片
- 如果我運行腳本,則站點 1 和站點 2 會彼此分開。如何像在 1 個窗口中一樣將站點 1 和站點 2 結合起來?
User_Input = New Window( "JMP AUTOMATION", << modal(),
hlistbox(
Text Box( "Enter Wafer ID:" ),
ID_Wafer = Text Edit Box( "", <<SET width=""></SET>
這是我處理這個問題的方法。在 JMP 中打開 csv 文件,然後運行以下腳本。它將全局數據加載到表變量中,更改列名稱,然後將測試列轉換為數字等。
Names Default To Here( 1 );
dt = Current Data Table();
// Add Global info as table variables
theRow = 1;
While( Column( dt, 1 )[theRow] != "Parameter",
If( Column( dt, 2 )[theRow] != "",
dt << new table variable( Column( dt, 1 )[theRow],
Column( dt, 2 )[theRow]
)
);
theRow++;
);
// Get rid of unwanted rows
dt << select where( As Column( dt, 3 ) == "" & As Column( dt, 4 ) == "" );
dt << delete rows;
// Rename columns
theRow = (dt << get rows where( As Column( dt, 1 ) == "Parameter" ))[1];
For( i = 1, i <= N Cols( dt ), i++,
If( Column( dt, i )[theRow] != "",
Column( dt, i ) << set name( Column( dt, i )[theRow] )
)
);
dt << delete rows(theRow);
// Attempt to set meta data for columns
// List of know columns
metaList = {
"SBIN", "numeric", "ordinal",
"HBIN", "numeric", "ordinal",
"DIE_X", "numeric", "ordinal",
"DIE_Y", "numeric", "ordinal",
"SITE", "numeric", "ordinal",
"TOTAL_TESTS", "numeric", "continuous",
"X", "numeric", "ordinal",
"Y", "numeric", "ordinal",
"SITE_NO", "numeric", "ordinal",
"PassFail", "numeric", "ordinal",
"TimeStamp", "numeric", "timestamp",
"PartSN", "character", "nominal"
};
// Process metaList into separate lists for easier processing
colList = {};
typeList = {};
modelList = {};
For( i = 1, i <= N Items( metaList ), i++,
If(
Mod( i, 3 ) == 1, Insert Into( colList, metaList[i] ),
Mod( i, 3 ) == 2, Insert Into( typeList, metaList[i] ),
Insert Into( modelList, metaList[i] )
)
);
For( i = 1, i <= N Cols( dt ), i++,
foundName = Contains( colList, Column( dt, i ) << get name );
If(
foundName,
If(
Contains( {"ordinal", "nominal", "continuous"}, modelList[foundName] ),
Column( dt, i ) << dataType( typeList[foundName] ) << modelingtype( modelList[foundName] ),
modelList[foundName] == "timestamp",
For( k = 1, k <= N Rows( dt ), k++,
Column( dt, i )[k] = Word( 1, Char( Column( dt, i )[k] ), "_ " ) || "/" || Word( 2, Char( Column( dt, i )[k] ), "_ " ) || "/"
|| Word( 3, Char( Column( dt, i )[k] ), "_ " ) || " " || Word( 2, Char( Column( dt, i )[k] ), " " )
);
Column( dt, i ) << datatype( numeric ) << modelingtype( continuous ) << set informat( "y/m/d h:m:s" ) <<
Format( "y/m/d h:m:s", 18, 0 );,
),
Is Missing( Num( Column( dt, i )[1] ) ) == 0,
Column( dt, i ) << datatype( numeric ) << modelingtype( continuous );
);
);
這可能會起作用:
Names Default to Here( 1 );
dt = Current Data Table();
loc = Contains( Column( dt, 1 ) << Get Values, "Parameter" );
dt << Select Rows( 1::loc - 1 ) << Delete Rows;
loc = Contains( Column( dt, 1 ) << Get Values, "PID-1" );
dt << Select Rows( 2::loc - 1 ) << Delete Rows;
For( i = 1, i <= N Col( dt ), i++,
Column( dt, i ) << Set Name( Column( dt, i )[1] )
);
dt << Select Rows( [1] ) << Delete Rows