Cómo filtrar/limpiar datos JMP usando una lista [consejo, JSL, secuencias de comandos]Después de recibir tanto apoyo, pensé que ya era hora de devolver este favor. A continuación encontrará un pequeño programa que podría facilitar el filtrado de tablas de datos. La codificación dura por "entrada" es una forma de filtrar las entradas; esto es tedioso y propenso a errores tipográficos. Una alternativa es filtrar las entradas por su "posición" en una lista de filtros. Este enfoque simplemente asume que la secuencia de campos en la lista de filtros no cambia. Para asegurarse, simplemente verifique el registro de JMP. Como control de calidad, yo Le dirá qué entradas fueron excluidas.
Buena suerte
novato2jumpie
names default to here( 1 );
// Open a sample data table
dt = Open( "$SAMPLE_DATA/big class.jmp" );
/* Get entries/levels from Column NAME and store them in NAME_LIST */
NAME_LIST = dt:NAME << get values ;
NAME_LIST ;
/* Remove selected entries ("levels") on given position in list = JMP table */
remove from(NAME_LIST, {1,3,5} ); /* {removes: "KATIE", "JANE", "LILLIE" */
/* Cleans data by removing rows using level list */
dt << Select where(contains(NAME_LIST, :NAME)) ;
dt_2 = dt << subset(selected rows(1), all columns);
/* Results in a subset without the levels "KATIE", "JANE", "LILLIE" */
close (dt, nosave) ;
Re: Cómo filtrar/limpiar datos JMP usando una lista [tipp, JSL, secuencias de comandos] - ¿Cómo hacer que funcione para duplicados?Aquí hay una forma de hacerlo.La única complejidad es convertir la matriz de números de fila en una lista
Names Default To Here( 1 );
// Open a sample data table
dt = Open( "$SAMPLE_DATA/big class.jmp" );
/* Get entries/levels from Column NAME and store them in NAME_LIST */
eval(parse("NAME_LIST =as list (" || char(index(1,n rows(dt))) || ")[1];"));
NAME_LIST ;
/* Remove selected entries ("levels") on given position in list = JMP table */
Remove From( NAME_LIST, {1, 3, 5} ); /* {removes: "KATIE", "JANE", "LILLIE" */
/* Cleans data by removing rows using level list */
dt << Select where( Contains( NAME_LIST, Row() ) );
dt_2 = dt << subset( selected rows( 1 ), all columns );
/* Results in a subset without the levels "KATIE", "JANE", "LILLIE" */
Close( dt, nosave );Re: Cómo filtrar/limpiar datos JMP usando una lista [tipp, JSL, secuencias de comandos] - ¿Cómo hacer que funcione para duplicados?
Hola a todos,
El viernes pasado proporcioné un pequeño JMP que ayuda a filtrar datos por su "posición" en una lista de filtros.
En un PM recibí un mensaje de que esto funciona solo mientras las entradas escaneadas para la lista de filtros sean únicas. Por ejemplo, si todas las entradas filtradas de NOMBRE son únicas, por ejemplo, si desea filtrar "Katie"; "Jane" o "Lillie".Ahora, "Robert" aparece dos veces en "BIG CLASS". Tan pronto como desee excluir también a "Robert", este enfoque se atasca. ¿Alguna idea de cómo resolver eso?
novato2jumpie
names default to here( 1 );
// Open a sample data table
dt = Open( "$SAMPLE_DATA/big class.jmp" );
/* Get entries/levels from Column NAME and store them in NAME_LIST */
NAME_LIST = dt:NAME << get values ;
NAME_LIST ;
/* Remove selected entries ("levels") on given position in list = JMP table */
remove from(NAME_LIST, {1,3,5} ); /* {removes: "KATIE", "JANE", "LILLIE" */
/* Cleans data by removing rows using level list */
dt << Select where(contains(NAME_LIST, :NAME)) ;
dt_2 = dt << subset(selected rows(1), all columns);
/* Results in a subset without the levels "KATIE", "JANE", "LILLIE" */
close (dt, nosave) ;