CIAO,
Sono nuovo nello scripting JSL. Voglio impilare le colonne provenienti dallo stesso nome comune (fino a una certa lunghezza). Ad esempio, ho il nome della colonna "66_CORR_B1_W00", "66_CORR_B1_W01" e così via fino a "66_CORR_B1_W12". Dovrebbero essere in un'unica colonna denominata ""66_CORR_B1". E questo si ripeterà per un altro nome di gruppo di colonne che inizia con "66_CORR_B2". Potrebbero esserci 20 gruppi di queste colonne. Infine voglio 20 colonne provenienti da 20 gruppi di colonne.
Qui allego una tabella dati di esempio.
Grazie in anticipo.
Muhammad Rahman
Di seguito è riportato uno script che funziona per i dati di esempio inclusi nella voce di discussione iniziale.
Names Default To Here( 1 );
dt = Data Table( "Sample_data" );
ColList = dt << get column names( string, numeric );
// Loop across the column names and find only the
// columns desired
For( i = N Items( ColList ), i >= 1, i--,
If( Contains( ColList[i], "66_CORR_B" ) == 0,
ColList = Remove( ColList, i, 1 )
)
);
// Sort the columns to ensure they are in the correct order
// for the contiguous stacking
ColList = Sort List( ColList );
// Stack the data
Data Table( "Sample_data" ) << Stack(
columns( ColList ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 2 ),
Contiguous
);
Lo script è molto semplice, nel senso che non controlla le situazioni in cui non esiste un numero uguale di colonne per ciascun raggruppamento e le colonne da selezionare non seguono un buon insieme di nomi.
Ma dovrebbe darti un'idea di come procedere