Eliminar filas duplicadas con marca de tiempoHola,
Tengo una tabla de datos de muestra adjunta en la que estoy buscando eliminar filas duplicadas dentro del conjunto de datos usando las columnas TimeStamp, Tool.
Criterios de duplicación:
Las marcas de tiempo que se encuentran dentro de los 6 minutos en la misma herramienta se consideran duplicadas y esas filas deben eliminarse.
¿Alguien puede ayudar a cómo se puede lograr esto en JSL?
¡Gracias!
@txnelson
AnalíticaTabla de datosScriptingVentanasRe: eliminar filas duplicadas con marca de tiempoCreo que esto le dará un ejemplo de cómo proceder con su problema.
Names Default To Here( 1 );
dt = Current Data Table();
// Loop through the data table deleting all duplicate rows
i = 1;
While( i <= N Rows( dt ),
// Find the upper and lower bounds to match on
lower = :timeStamp[i] - In Minutes( 6 );
upper = :timeStamp[i] + In Minutes( 6 );
// Find the rows that match
theRows = dt << get rows where( :timeStamp > lower & :timeStamp < upper );
// Remove the current row from the list. We do not want to delete it
Try( theRows[1] = [] );
// Delete the remaining rows
Try( dt << delete rows( theRows ) );
// Increment the row to work on
i++;
);
Re: eliminar filas duplicadas con marca de tiempoHola @ psundar6 ,
@txnelson proporciona una muy buena solución.
Un enfoque alternativo que utiliza la clasificación de tabla y la fórmula de columna se puede realizar de forma interactiva o mediante un script de la siguiente manera:
dt = current data table();
dt << Sort(
By( :TimeStamp, :Tool ),
Replace Table,
Order( Ascending, Ascending )
);
dt << New Column( "to delete",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Formula( If( :Tool == Lag( :Tool, 1 ) & Date Difference( Lag( :TimeStamp, 1 ), :TimeStamp, "Minute" ) > 6, 1, 0 ), eval formula )
);
dt:to delete << suppress eval(true);
dt<< delete rows (dt<< get rows where (:to delete == 1));
Háganos saber si funciona para usted.
Re: eliminar filas duplicadas con marca de tiempoHola ron
Probé su solución y veo un problema con el resultado.
Adjunto el resultado de ejecutar su código. Parece que no detecta un par de entradas duplicadas por alguna razón.
Gracias.
Re: eliminar filas duplicadas con marca de tiempo¡Esto funciona, gracias!