Eliminación de filas duplicadas (manteniendo el primer duplicado)Sé que esto se ha discutido antes, pero estoy buscando sugerencias para mi situación particular. Tengo una tabla de datos muy grande (~50 columnas x más de 50.000 filas). Necesito verificar si hay "filas duplicadas", donde duplicado significa que las filas coinciden en tres columnas (por ejemplo, ColA, ColB y ColC). Cuando existen duplicados, necesito eliminar todo excepto la primera de las filas coincidentes.
Idealmente, me gustaría hacer esto con un script, ya que con frecuencia necesito volver a extraer y analizar la tabla actualizada. Sospecho que puedo usar una tabla de resumen para ayudar con esto (al menos identificará y seleccionará las filas duplicadas). Sin embargo, a partir de ahí no estoy seguro de cómo automatizar el movimiento a través de cada conjunto de filas "coincidentes" y eliminar todas menos la primera.Re: Eliminar filas duplicadas (manteniendo el primer duplicado)¡Genial!
Mientras tanto (en JMP 13), esto debería ser equivalente
// Keep first instance of duplicates only
dt << select where(Col Min(Row(), :a, :b, :c) < Row()) << delete rows;
Re: Eliminar filas duplicadas (manteniendo el primer duplicado)JMP 14 tiene un nuevo comando "Seleccionar filas duplicadas" en el menú Filas, por lo que puede hacerlo directamente sin tener que unirse.
dt << select duplicate rows(match(:a, :b, :c));
dt << delete rows;
Eliminación de filas duplicadas (manteniendo el primer duplicado)¡Gracias, funcionó muy bien!Aquí está mi código para la versión del script:
// JMP script to Eliminate duplicate rows "matching Parent, Wafer, & Raw Number"
dt3 = Current Data Table();
dt2 = dt3 << Summary(
Group( :Parent, :Meas Wafer Id, :Raw Number )
);
dt = dt3 << Join(
With( dt2 ),
Update,
By Matching Columns(
:Parent = :Parent,
:Meas Wafer Id = :Meas Wafer Id,
:Raw Number = :Raw Number
),
Drop multiples( 1, 0 ),
Name( "Include non-matches" )(0, 0),
Preserve main table order( 1 ),
);
Close(dt2, no save);
Close(dt3, no save);
Re: Eliminar filas duplicadas (manteniendo el primer duplicado)Usaría un resumen de las 3 columnas coincidentes. Luego, una la tabla de resumen a la tabla original, haga coincidir las mismas 3 columnas, con la opción de eliminar duplicados marcada y seleccione solo las columnas relevantes que desee para la tabla de salida.Re: Eliminar filas duplicadas (manteniendo el primer duplicado)¿Puedo saber si quiero conservar el último (no el primero) de los duplicados?¿Cómo cambiar el guión? Gracias.
Re: Eliminar filas duplicadas (manteniendo el primer duplicado)Aquí hay una variación de @EM script que debería hacer lo que quieres
dt << select where(Col Max(Row(), :a,:b, :c) > Row()) << delete rows;
Re: Eliminar filas duplicadas (mantener el primer duplicado)¡Genial! Funciona. Gracias, es lo que necesito.
Saludos,Chily