JSL cambia parte del nombre de la columna en función de los valores de otra tablaDespués de ejecutar una consulta general para recopilar una gran cantidad de datos con el encabezado general bin01, bin02, .... bin16, quiero actualizar los encabezados de columna en función de una variable diferente que tenga información de bin basada en la receta. Esta parece una tarea fácil utilizando un comando munger, pero genera errores cuando se coloca en un bucle anidado. La misma sintaxis funciona en un formato de bucle único, pero dado que habrá una cantidad variable de valores de bin para reemplazar, es posible que se prefiera una estructura de bucle de entre 1 y 16. He adjuntado tablas de datos de muestra y JSL. Se agradecen todas las recomendaciones. Estoy trabajando en este problema utilizando JMP16.1
Personalización masivaVentanasRe: JSL cambia parte del nombre de la columna según los valores de otra tablaAquí hay una revisión de su secuencia de comandos que funciona con sus tablas de datos de muestra.El cambio principal es la adición de la función Try(), que evita que el código se detenga cuando ocurre un error dentro de 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] ) )
)
)
)
)
);
Re: JSL cambia parte del nombre de la columna según los valores de otra tablaGracias por tu ayuda.No había visto el comando TRY antes.Funcionó muy bien.