<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />He estado tratando de encontrar una manera de eliminar filas que tienen celdas idénticas en algunas columnas pero no en otras.
Por ejemplo, deseo buscar filas donde los valores de las columnas PartNo, SerialNum y Site sean idénticos, pero no Customer y Value. Entonces quiero borrar una de estas filas. En
este caso me quedaría con la fila 1,3 y 4-ver más abajo.
Gracias
| Parte no | Número de serie | Sitio | Cliente | Valor |
|---|
| 1 | 2 | 3 | una | 1.5 |
| 1 | 2 | 3 | segundo | 2 |
| 3 | 4 | 5 | do | 3 |
| 2 | 3 | 4 | re | 5 |
| 2 | 3 | 4 | mi | 6 |
Si desea hacerlo a través de secuencias de comandos, el siguiente código muestra un ejemplo que conserva solo la primera instancia de una fila duplicada. Explota el hecho de que la tabla de resumen está vinculada a la tabla de detalles.
// Ejemplo de datos
dt1 = Abierto ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
// ¿Qué columnas se utilizan para definir duplicados?
teclas de control = { "Años" , "Sexo" } ;
// Hacer una tabla de resumen enlazada, invisible, dt2
dt2 = dt1 << Resumen ( Grupo ( Evaluar ( teclas de control )) , Invisible ) ;
// Recorrer las filas de dt2 ...
filas2Keep = [] ;
para ( r = 1 , r <= NRows ( dt2 ) , r ++,
// ... selecciona cada fila por turno
dt2 << SelectRows ({ r }) ;
// Encuentra las filas correspondientes en dt1
duplicateRows = dt1 << GetSelectedRows ;
// Mantener solo la primera
filas2Keep = VConcat ( filas2Keep , duplicateRows El 1 ]) ;
// Eliminar la selección actual
dt2 << ClearSelect ;
) ;
Cerrar ( dt2 , NoSave ) ;
// Eliminar las filas en dt1 que son duplicados
filas2Borrar = ( 1 :: NRow ( dt1 )) `;
filas2Borrar El filas2Keep ] = [] ;
dt1 << DeleteRows ( filas2Borrar ) ;
Hola,
Puede usar Unirse para unir la tabla a sí misma, haciendo coincidir las columnas de la Parte No, Número de serie y Sitio, y elimine los múltiplos. Aquí es cómo se vería el diálogo Unirse para este caso.
¡Espero que ayude!