Elimine valores de celda en función de una condición de columna y combine filas con la misma marca de tiempo usando JSLHola,
Tengo los siguientes "TestData":

1. Quiero que el valor de la celda sea nulo cuando el estado esté inactivo. por ejemplo, el valor de la celda "Un estado" está "abajo", el valor en la columna "A" debe ser nulo en lugar de "1334". Debe hacer lo mismo para las columnas B, C y D.
2. Elimine todas las columnas que tengan "estado" en el nombre de la columna.
La salida debería ser algo como esto:


3. Ahora se deben fusionar todas las mismas filas de marca de tiempo. el resultado esperado sería: (sé que puedo usar el resumen [agrupar por y suma] para lograr esto. Pero, ¿hay una mejor manera de hacerlo en JSL?)

Tengo que hacer esto para varios archivos csv. ¿Puede alguien ayudarme a escribir JSL para esto?
Muchas gracias de antemano.
secuencias de comandosRe: Eliminar valores de celda basados en una condición de columna y fusionar filas con la misma marca de tiempo usando JSLEsto debería funcionar por usted, pero el script asume que las columnas de estado corresponden a la columna que las precede.Puede hacer esto mirando el nombre de la columna de estado y encontrando una columna con el mismo nombre menos "Estado", pero pensé que sería innecesariamente complicado si la suposición es cierta.
dt = Current Data Table();
col_names = dt << Get Column Names(string);
//Assuming the corresponding value column for each status column is always the preceding one
//Loop backwards through the columns
for(i = N Col(dt), i>= 1, i--,
//If column name has word "status" in it
if(Contains(Lowercase(col_names[i]), "status") > 0,
//Look for instances of "{down}"
down_rows = dt << Get Rows Where( dt:(As Name(col_names[i])) == "{down}" );
//Assuming preceding column is the value column, replace {down} rows with missing
Column(dt, i-1)[down_rows] = .;
dt << Delete Columns(i);
);
);
//Create table summary to consolidate time stamp rows with same value
//Build a string that we can parse for the summary operation
remaining_cols = dt << Get Column Names("string");
summary_str = "dt_clean = dt << Summary( Group( :TimeStamp ), ";
//Loop through all columns except TimeStamp to add "Sum( <CURRENT col=""> )" to summary string
for(i = 2, i <= N Col(dt), i++,
summary_str = summary_str||"Sum( :Name(\!""||remaining_cols[i]||"\!")), ";
);
//Attach last part of script
summary_str = summary_str||"Freq( \!"None\!"),
Weight(\!"None\!"),
statistics column name format( \!"column\!" ),
Link to original data table( 0 ),
output table name( \!"CleanedData\!" ));";
//Parse and evaluate the string to create the summary table dt_new
eval(parse(summary_str));
//Delete N Rows column
dt_clean << Delete Columns(:N Rows);</CURRENT>