¿Cómo filtrar las identificaciones duplicadas dejando solo el último duplicado?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
Espero que haya una solución JSL en la que pueda usar un ' << Seleccione Donde 'mensaje a la datatable. Tengo una base de datos de datos en la que cada fila representa un dispositivo probado.
Hay 2 columnas numéricas que especifican un identificador único para cada fila, es decir, una columna de "ID" y una columna de "número de oblea". También hay otras 2 columnas que especifican la fecha y la hora con respeto. El problema es que a veces, los dispositivos se vuelven a probar dentro del mismo conjunto de datos, lo que lleva a valores duplicados para las columnas de ID y obleas. Me gustaría poder seleccionar todas las ID únicas y, en el caso de las ID duplicadas, me aseguro de que solo se seleccione el último valor (ya sea por número de fila o marca de tiempo).
A continuación se muestra una muestra de datos que muestra lo que estoy buscando. Las dos partes que fueron reexaminadas (resaltadas aquí en rojo, las reevaluaciones correspondientes están en verde) se excluyen y todo lo demás se selecciona.
Cualquier ayuda con esto sería muy apreciada.
Gracias.

Re: ¿Cómo filtrar las identificaciones duplicadas dejando solo el último duplicado?Hola nkelleh
cuando dije "ordenaría la tabla por ID, WaferNum, fecha y hora (en ese orden)", quise decir
Current Data Table() << Sort(By(:ID, :WaferNum, :Date, :Time), Order(Ascending));
Tengo una fuerte sospecha de que ejecutar varios Ordenar (una sola columna como un argumento para cada uno) uno tras otro, como hiciste, no dará los mismos resultados que ejecutar un solo Ordenar con varias columnas como argumentos.
Espero que esto ayude
Re: ¿Cómo filtrar las identificaciones duplicadas dejando solo el último duplicado?Hola a todos,
Muchas gracias por toda su ayuda.
Jeff, su enfoque hubiera funcionado muy bien para mí, excepto que al examinar más a fondo los datos, resulta que había duplicados con los mismos valores de fecha y hora (disculpas, esto no se muestra en el ejemplo).
Al final, acepté la sugerencia de Jvillaumie. A continuación se muestra mi implementación.
mydt = Current Data Table();
//Sort columns by ID, wafer num, date in that order
mydt << Sort( Replace Table, By(:ID), Order(Ascending));
mydt << Sort( Replace Table, By(:WaferNum), Order(Ascending));
mydt << Sort( Replace Table, By(:Date), Order(Ascending));
//Select duplicates, i.e. if the next row has the same values for ID and waferNum as the current row, i.e. everything but the last duplicate
mydt << Select Where(
:ID == :ID[Row() + 1] & :WaferNum == :WaferNum[Row() + 1]
);
//Delete Selection
mydt <<DeleteRows;
Re: ¿Cómo filtrar las identificaciones duplicadas dejando solo el último duplicado?Como tantas cosas con JMP, hay varias formas de lograr esto.
Lo primero a tener en cuenta es que la Col máximo () la función tomará opcional PorVariable argumentos

Entonces, creo que puedes usar esto para construir tu condición para seleccionar filas:
(:Date ==Col Maximum(:Date,:ID,:WaferNum ))&(:Time ==
Col Maximum(:Time,:ID,:WaferNum,:Date ));
-Jeff
Re: ¿Cómo filtrar las identificaciones duplicadas dejando solo el último duplicado?Ordenaría la tabla por ID, WaferNum, fecha y hora (en ese orden), de modo que las filas con el mismo ID y WaferNum se sigan una a la otra en la tabla, con las más antiguas arriba de las más recientes.
Luego crearía una nueva columna llamada "Duplicar", con esta fórmula (debería poder copiarla directamente y pegarla en JMP):
If( :ID == :ID[Row() + 1, Empty()] & :WaferNum == :WaferNum[Row() + 1, Empty()],
1,
0
)
Indicará las filas seguidas por otra fila con el mismo ID y WaferNum (es decir, las repeticiones que no son las más recientes) con un "1".
Utilice SelectWhere Duplicate == 0.
Re: ¿Cómo filtrar las identificaciones duplicadas dejando solo el último duplicado?Echa un vistazo a estas discusiones:
Re: Sintaxis: ¿Cómo creo una columna de índice por ID
Fórmula JMP: Clasificación por grupo
Una vez que establezca el ranking que puede filtrar.
ron
Re: ¿Cómo filtrar las identificaciones duplicadas dejando solo el último duplicado?Gracias por esto. Sí vi un ejemplo de esto, pero esperaba que hubiera una forma de lograrlo especificando una condición dentro del mensaje << Seleccionar dónde () para la fecha y hora. Tengo la sensación de que debería ser posible, pero no estoy seguro de cómo lo harías.
Además, otra consideración es que dentro de un lote de prueba, la marca de fecha y hora no cambia, lo que significa que aún tendrá duplicados donde la única diferencia está en el número de fila cuando está limitado a las columnas que especifiqué. Saludos en cualquier caso.
Re: ¿Cómo filtrar las identificaciones duplicadas dejando solo el último duplicado?una opción podría ser crear una columna para la fecha y la hora (concatenación). esto le permitirá utilizar el resumen de la tabla por ID y WaferNum y solicitar el valor máximo de fecha y hora. Esto producirá una nueva mesa limpia para ti.
Ron