JSL modifica parte del nome della colonna in base ai valori di un'altra tabellaDopo aver eseguito una query generale per raccogliere molti dati con intestazione generale di bin01, bin02, .... bin16. Voglio aggiornare le intestazioni di colonna in base a un diverso able che ha informazioni bin basate sulla ricetta. Sembra un compito facile usando un comando munger, ma si verificano errori quando viene inserito in un ciclo nidificato. La stessa sintassi funziona in un formato a ciclo singolo, ma poiché ci sarà un numero variabile di valori bin da sostituire da 1 a 16, è preferibile una struttura a ciclo. Ho allegato tabelle di dati di esempio e JSL. Qualsiasi suggerimento è gradito. Sto lavorando su questo problema usando JMP16.1
Personalizzazione di massaFinestreRe: JSL cambia parte del nome col in base ai valori di un'altra tabellaEcco una rielaborazione del tuo script che funziona con le tue tabelle di dati di esempio.La modifica principale è l'aggiunta della funzione Try(), che impedisce al codice di interrompersi quando si verifica un errore all'interno di 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] ) )
)
)
)
)
);
Ri: JSL cambia parte del nome colonna in base ai valori di un'altra tabellaGrazie per l'aiuto.Non avevo mai visto il comando TRY prima.Ha funzionato alla grande.