运行常规查询以收集大量数据后,常规标题为 bin01、bin02、....bin16。我想根据具有基于配方的 bin 信息的不同表来更新列标题。使用 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 命令。效果很好。