<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Estoy usando JMP10.Estoy intentando crear un script para eliminar filas duplicadas de datos en una tabla de datos.Un ejemplo de mi intento es el siguiente:
// Comenzar.
// Crear tabla de datos.
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Seleccionar aleatoriamente(5);
subdt = dt << Subconjunto(Nombre de la tabla de salida ("subconjunto"), Invisible);
dt << Concatenar(subdt, Agregar a la primera tabla);
Cerrar(subdt, Sin guardar);
dt << Borrar selección;
// Encuentra y elimina filas duplicadas para bigClass.
icol = dt << Nueva columna( "Índice", Numérico, Continuo, Fórmula( Secuencia( 1, N Fila( dt ), 1, 1 ) ) );
repcol = dt << Nueva columna ("Repetir datos",
Numérico,
Continuo,
Fórmula( If( :Índice == Col Mínimo( :Índice, :nombre, :edad, :sexo, :altura, :peso ), 1, 0 ) )
);
dt << Seleccionar dónde (como columna (repcol) == 0);
dt << Eliminar filas();
dt << Eliminar columnas ({icol, repcol});
// Encuentra y elimina filas duplicadas para la tabla de datos genérica.
colnames = dt << Obtener nombres de columnas();
icol = dt << Nueva columna( "Índice", Numérico, Continuo, Fórmula( Secuencia( 1, N Fila( dt ), 1, 1 ) ) );
repcol = dt << Nueva columna ("Repetir datos",
Numérico,
Continuo,
Fórmula( If( :Índice == Col Mínimo( :Índice, /* Inserte nombres de columnas aquí. */ ), 1, 0 ) )
);
dt << Seleccionar dónde (como columna (repcol) == 0);
dt << Eliminar filas();
dt << Eliminar columnas ({icol, repcol});
// Fin.
Mi problema es que me gustaría ejecutar este script en una tabla de datos genérica.¿Cómo puedo insertar mi lista de nombres de columnas en mi fórmula?¿Existe una forma más inteligente de hacer esto?
¡Gracias!
Es inteligente utilizar Col Min() con una columna de índice para localizar duplicados.
Normalmente uso Tablas->Resumen para obtener una tabla de datos libre de duplicados. Simplemente agrupe por todas las columnas que definirían un duplicado. Esto tiene la ventaja adicional de proporcionar una columna (N filas) que le indica cuántas filas duplicadas había en la tabla original.

-Jeff
Fui demasiado rápido. La primera versión publicada fallaría para nombres de columnas complejos que requieren la construcción :Name("eg ∆X"). Edité el código anterior y ahora debería funcionar de manera más general.
Gracias MS!Muy inteligente.Todavía tendré que estudiar exactamente cómo funciona.
¡Qué idea brillante usar Col Min() para encontrar duplicados!
A continuación se muestra un enfoque alternativo basado en su idea que parece funcionar. Es más sencillo porque no hay necesidad de columnas de fórmula temporales.
// Crea una tabla de datos de ejemplo.
Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) << Concatenar ( Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) , Agregar a la primera tabla ) ;
// Eliminar duplicados de la tabla genérica
dt = Tabla de datos actuales () ;
col_min = Analizar gramaticalmente ( "Col Min( Fila(), :Nombre(\!"" || Artículos Concatenados ( dt << obtener nombres de columnas ( cadena ) , "\!"), :Nombre(\!"" ) || "\!"))" ) ;
duplicados = [] ;
Por cada fila ( Si ( col_min != Fila () , duplicados |/= Fila () ) ) ;
dt << eliminar filas ( duplicados ) ;