JSL modifie une partie du nom de la colonne en fonction des valeurs d'une autre tableAprès avoir exécuté une requête générale pour collecter de nombreuses données avec l'en-tête général bin01, bin02, .... bin16. Je souhaite mettre à jour les en-têtes de colonne en fonction d'un autre élément contenant des informations sur les bacs en fonction de la recette. Cela semble une tâche facile à l'aide d'une commande munger, mais des erreurs se produisent lorsqu'elle est placée dans une boucle imbriquée. La même syntaxe fonctionne dans un format de boucle unique, mais comme il y aura un nombre variable de valeurs de bac à remplacer de 1 à 16, une structure de boucle est préférable. J'ai joint des exemples de tables de données et de JSL. Toutes les recommandations sont les bienvenues. Je travaille sur ce problème à l'aide de JMP16.1
Personnalisation de masseFenêtresRe : JSL modifie une partie du nom de col en fonction des valeurs d'une autre tableVoici une refonte de votre script qui fonctionne avec vos exemples de tableaux de données.Le principal changement est l'ajout de la fonction Try(), qui empêche le code de s'arrêter lorsqu'une erreur dans Set() se produit.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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 modifie une partie du nom de col en fonction des valeurs d'une autre tableMerci pour votre aide.Je n'avais pas vu la commande TRY auparavant.A très bien fonctionné.