執行一般查詢以收集大量資料後,一般標頭為 bin01、bin02、.... bin16。我想根據具有基於配方的垃圾箱資訊的不同能力來更新列標題。使用 munger 命令這似乎是一項簡單的任務,但是當放入巢狀循環中時會出錯。相同的語法適用於單循環格式,但由於可能存在可變數量的 bin 值來替換 1 到 16,因此首選循環結構。我附上了範例資料表和 JSL。如有任何建議,我們將不勝感激。使用 JMP16.1 解決此問題
這是您的腳本的返工,適用於您的示例數據表。主要變化是添加了 Try() 函數,當 Set() 中發生錯誤時,該函數可以防止代碼停止。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Need to update data table based on bins in recipe, name and get rid of Bin Cols no data was collected, bins greater that number defined by bin size list
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Referance: https://community.jmp.com/t5/JMP-Scripts/Find-amp-Replace-for-Column-Names/ta-p/217124
b = Data Table( "BinSizeList" ):Name( "CntBins" ) << get values;
Show( b );
Show( b[1] );
bnum = Data Table( "BinSizeList" ):Name( "Label" ) << get values;
Show( bnum );
bsize = Data Table( "BinSizeList" ):Name( "Bin_Label" ) << get values;
Show( bsize );
Data Table( "LPD_Data" ) << Select Columns( ALL );
cols = Data Table( "LPD_Data" ) << Get Selected Columns();
Show( cols );
// Nested loop does not work? Error on "set name" comand only when nested j loop is included. Works fine if j for statement is removed and [ j ] replaced with a valid number
For( i = 1, i <= N Items( cols ), i++,
For( j = 1, j <= b[1], j++,
Try(
cols[i] << set name(
Munger(
Char( cols[i] ), // << get name,
1,
Eval( Char( bnum[j] ) ),
Eval( Char( bsize[j] ) )
)
)
)
)
);
感謝您的幫助。我以前沒有見過 TRY 命令。效果很好。