Seleccionar condicional donde<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Tengo el siguiente código JSL para seleccionar y crear subconjuntos de datos donde hay menos de 25 filas por 'etiqueta', guardar el subconjunto y eliminarlo del conjunto de datos de trabajo principal. Esto funciona bien donde hay etiquetas con menos de 25 filas, pero necesito que sea sólido y funcione donde no hay etiquetas con menos de 25 filas, en cuyo caso debería ignorar las líneas 4 a 6 y continuar con la línea 7 para guardar. el conjunto de datos de trabajo principal con un nuevo nombre. ¿Cómo puedo conseguir esto?
Muchas gracias
1 Abrir( "datos.jmp" );
2 dt=tabla de datos actual() << Resumen( Grupo( :etiqueta ) );
3 Tabla de datos ("datos por (etiqueta)") << Seleccionar dónde (: N filas < 25) << Ordenar (por (: N filas), Orden (ascendente), Nombre de la tabla de salida ("summary_of_small_n"));
4 Tabla de datos( "datos") << Subconjunto(( Filas seleccionadas ), Nombre de la tabla de salida ("sub_small_n"));
5 Tabla de datos( "sub_small_n" ) << save("sub_small_n.jmp");
6 Tabla de datos( "summary_of_small_n" ) << save("summary_of_small_n.jmp");
7 Tabla de datos( "datos") << eliminar filas << guardar("data_less_small_n.jmp");
Re: Seleccionar dónde condicionalDespués de jugar un poco más, lo siguiente parece funcionar para mí. Gracias por la ayuda.
Abrir( "datos.jmp" );
dt = tabla de datos actual() << Resumen( Grupo( :etiqueta ) );
Tabla de datos( "datos por (etiqueta)") << Seleccionar dónde( :N filas < 25) << Ordenar( Por( :N filas ), Orden( Ascendente ), Nombre de la tabla de salida ("summary_of_small_n_tag"));
Tabla de datos( "summary_of_small_n_tag" ) << save("summary_of_small_n_tag.jmp");
num_selected = nrows(dt << obtener filas seleccionadas);
si(núm_seleccionado(dt > 0),
// Si se cumple la condición, haz esto...
Tabla de datos( "datos") << Subconjunto(( Filas seleccionadas ), Nombre de la tabla de salida ("sub_small_n"));
Tabla de datos( "sub_small_n" ) << save("sub_small_n.jmp");
Tabla de datos( "datos") << eliminar filas << guardar("data_less_small_n.jmp");
,
// Si no, haz esto...
Tabla de datos( "datos") << guardar(" datos_less_small_n.jmp ");
);
Re: Seleccionar dónde condicional@rijking
Basándonos únicamente en el punto (a), ¿tal vez funcionaría probar una selección inversa? Lo has probado ?Si no funciona, ¿puede sugerirme una tabla de datos de muestra de la Biblioteca de datos de muestra que se ajuste a su problema para que pueda intentar reproducir el problema y tratar de ayudar?
Mejor
Uday
Re: Seleccionar dónde condicionalIan, gracias. Esto no funciona del todo como:
a) Necesito hacer referencia al número de seleccionado filas (en lugar del total de filas en las que, según tengo entendido, funciona NRow), porque dt2 resume el número total de filas para todas las etiquetas, no solo aquellas <25.
b) Si me refiero a filas seleccionadas en dt2, creo que debe ser > 0 en lugar de > 24, porque dt2 resume el número total de filas para todas las etiquetas, por lo que estoy interesado en todas las filas seleccionadas (incluso si solo hay una). ; ese estaría resumiendo una etiqueta que aparece en menos de 25 filas en el dt subyacente).
Cualquier otra sugerencia sería muy apreciada. Gracias.
Ian@JMP wrote:You need to use the 'NRow()' function in combination with an 'If()' expression. Something like:Open( "data.jmp" );dt = current data table() << Summary( Group( :tag ) );dt2 = Data Table( "data By (tag)" ) << Select Where( :N Rows < 25) << Sort( By( :N Rows ), Order( Ascending ), Output Table Name("summary_of_small_n"));if( NRow(dt2 > 24, // If the condition is satisfied, do this . . . Data Table( "data" ) << Subset(( Selected Rows ), Output Table Name("sub_small_n")); Data Table( "sub_small_n" ) << save("sub_small_n.jmp"); Data Table( "summary_of_small_n" ) << save("summary_of_small_n.jmp") , // Else do this . . . Data Table( "data" ) << delete rows << save("data_less_small_n.jmp"); );
Re: Seleccionar dónde condicionalDebe utilizar la función 'NRow()' en combinación con una expresión 'If()'. Algo como:
Abierto ( "datos.jmp" ) ;
dt = tabla de datos actual () << Resumen ( Grupo ( : etiqueta ) ) ;
dt2 = Tabla de datos ( "datos por (etiqueta)" ) << Seleccione dónde ( : N filas < 25 ) << Clasificar ( Por ( : N filas ) , Orden ( Ascendente ) , Nombre de la tabla de salida ( "resumen_de_pequeño_n" )) ;
si (
Nfila ( dt2 > 24 ,
// Si se cumple la condición, haz esto. . .
Tabla de datos ( "datos" ) << Subconjunto (( Filas seleccionadas ) , Nombre de la tabla de salida ( "sub_pequeño_n" )) ;
Tabla de datos ( "sub_pequeño_n" ) << ahorrar ( "sub_small_n.jmp" ) ;
Tabla de datos ( "resumen_de_pequeño_n" ) << ahorrar ( "summary_of_small_n.jmp" )
,
// Si no, haz esto. . .
Tabla de datos ( "datos" ) << eliminar filas << ahorrar ( "data_less_small_n.jmp" ) ;
) ;