Re: Cómo extender una selección de fila desde una instrucción IfHay algunas interpretaciones diferentes de su pregunta, pero espero que la que estoy resolviendo sea la correcta. Echa un vistazo a mi guión y dime si es lo que estabas pensando
Names Default To Here( 1 );
dt = New Table( "IfSelRows",
Add Rows( 15 ),
Compress File When Saved( 1 ),
New Column( "G1",
Character( 1 ),
"Nominal",
Set Values( {"A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C"} ),
Set Display Width( 76 )
),
New Column( "D1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0] ),
Set Display Width( 58 )
)
);
// Get the rows where D1 > 1
d1Rows = dt << get rows where( :D1 > 1 );
// Create a list with the values of G1 for the rows that have been selected
g1Values = {};
If( N Rows( d1Rows ) > 0,
For( i = 1, i <= N Rows( d1Rows ), i++,
Insert Into( g1Values, dt:G1[d1Rows[i]] )
)
);
// Select the rows where any of the values in the g1List exist
dt << select where(contains(g1Values,:G1));
Re: Cómo extender una selección de fila desde una instrucción IfGracias Jim por tu rápida respuesta. Tienes mi pregunta correcta. Tu guión entrega exactamente lo que estaba buscando.
Re: Cómo extender una selección de fila desde una instrucción IfNuevamente gracias por codificar. Funciona según lo previsto. ¿Qué se debe cambiar o agregar al código para usarlo como columna de fórmula?
escribió:
Hay algunas interpretaciones diferentes de su pregunta, pero espero que la que estoy resolviendo sea la correcta. Echa un vistazo a mi guión y dime si es lo que estabas pensando
Nombres predeterminados hasta aquí (1); dt = Nueva tabla ("IfSelRows", Agregar filas (15), Comprimir archivo al guardar (1), Nueva columna ("G1", Personaje (1), "Nominal", Valores establecidos ({"A", "A" , "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C", " C "}, Establecer ancho de visualización (76), Nueva columna (" D1 ", Numérico," Continuo ", Formato (" Mejor ", 12), Valores establecidos ([1, 1, 1, 1, 1, 1 , 2, 1, 1, 1, 0, 0, 0, 0, 0]), Establecer ancho de visualización (58)); // Obtener las filas donde D1> 1 d1Rows = dt << obtener filas donde (: D1> 1); // Cree una lista con los valores de G1 para las filas que se han seleccionado g1Values = {}; Si (N Rows (d1Rows)> 0, For (i = 1, i <= N Rows (d1Rows), i ++, Insert Into (g1Values, dt: G1 [d1Rows [i]]))); // Seleccione las filas donde cualquiera de los valores en g1List existe dt << select where (contiene (g1Values,: G1));Nuevamente gracias por codificar. Funciona según lo previsto. ¿Qué se debe cambiar o agregar al código para usarlo como fórmula?
Re: Cómo extender una selección de fila desde una instrucción IfNo estoy seguro de qué es lo que quieres hacer con una versión de fórmula. Es decir, qué valores están anticipando terminan en la nueva columna, pero a continuación es mi conjetura sobre lo que podría querer hacer.
Para su información, la versión de la fórmula no será tan eficiente como la versión de secuencias de comandos, ya que tendrá que ejecutarse una vez por cada fila.
If( Row() == 1,
dt = Current Data Table();
d1Rows = dt << get rows where( :D1 > 1 );
g1Values = {};
If( N Rows( d1Rows ) > 0,
For( i = 1, i <= N Rows( d1Rows ), i++,
Insert Into( g1Values, dt:G1[d1Rows[i]] )
)
);
);
If( Contains( g1Values, :G1 ),
x = 1;
Row State( Row() ) = Selected State( 1 );
,
x = 0
);
x;
Aquí está el script de la tabla de datos con la fórmula aplicada
New Table( "IfSelRows",
Add Rows( 15 ),
Compress File When Saved( 1 ),
New Column( "G1",
Character( 1 ),
"Nominal",
Set Values(
{"A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C",
"C"}
),
Set Display Width( 76 )
),
New Column( "D1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0] ),
Set Display Width( 58 )
),
New Column( "Column 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1,
dt = Current Data Table();
d1Rows = dt << get rows where( :D1 > 1 );
g1Values = {};
If( N Rows( d1Rows ) > 0,
For( i = 1, i <= N Rows( d1Rows ), i++,
Insert Into( g1Values, dt:G1[d1Rows[i]] )
)
);
);
If( Contains( g1Values, :G1 ),
x = 1;
Row State( Row() ) = Selected State( 1 );
,
x = 0
);
x;
)
)
)Re: Cómo extender una selección de fila desde una instrucción IfSolicito una columna de fórmula porque los datos están actualizados por SQL. Una columna de fórmula existente con números de índice se está actualizando automáticamente con respecto a los nuevos datos.
Re: Cómo extender una selección de fila desde una instrucción IfLe sugiero que si planea continuar usando JMP y JSL, debe tomarse el tiempo para leer la documentación de JSL en la Guía de scripting.
Ayuda ==> Libros ==> Guía de scriptingCómo extender una selección de fila desde una instrucción If¿Cómo extender una selección de fila de una instrucción if en los mismos valores de agrupación de otra columna? En el caso del archivo adjunto, la fila 7 se selecciona con:
dt << seleccione donde (: D1> 1);
La selección debe extenderse en todos los valores de agrupación de la columna G1, que en este caso son todos "B"