Hola,
Soy nuevo en scripts JSL. Quiero apilar columnas que vienen del mismo nombre común (hasta cierta longitud). Como tengo el nombre de columna "66_CORR_B1_W00", "66_CORR_B1_W01" y así sucesivamente hasta "66_CORR_B1_W12". Deben estar en una sola columna llamada "" 66_CORR_B1 ". Y esto se repetirá para otro nombre de grupo de columnas con "66_CORR_B2". Podría haber 20 grupos de estas columnas. Finalmente quiero 20 columnas que provienen de 20 grupos de columnas.
Aquí adjunto una tabla de datos de muestra.
Gracias por adelantado.
Muhammad Rahman
A continuación, se encuentra una secuencia de comandos que funciona con los datos de muestra que incluyó en su Entrada de discusión inicial.
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
);
El script es muy básico, ya que no comprueba las situaciones en las que no hay un número igual de columnas para cada agrupación, las columnas que se seleccionan no siguen un conjunto de nombres muy bueno.
Pero debería darte una idea de cómo proceder.