Problema
Suponga que desea seleccionar filas en una tabla de datos que cumplan con más de una condición. O tal vez desee seleccionar las filas que cumplen una de varias condiciones.
Solución
Los siguientes ejemplos demuestran cómo puede usar los operadores lógicos AND (&) y OR (|) con el mensaje Seleccionar dónde para seleccionar filas que cumplan varias condiciones.Vea los comentarios incrustados para más detalles.
/* Open a sample data table */
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
/* Select rows where students are over 13, who are also less than 65 inches tall */
dt << Select Where( :age > 13 & :height < 65 );
Wait( 2 ); // For demonstration purposes
/* Select rows where students are either 12 or 14 years old */
dt << Select Where( :age == 12 | :age == 14 );
@rishdude23
Una fórmula de columna itera de forma nativa sobre las filas.Por lo tanto, el bucle For() no es necesario.La función Lag() devolverá el valor del argumento en la fila anterior.Así que algo como esto podría funcionar para usted.
Formula(
If(
(:age == Lag( :age, 1 )) & (:sex == Lag( :sex, 1 )), "Same age, same gender",
(:age != Lag( :age, 1 )) & (:sex == Lag( :sex, 1 )), "Diff age, same gender",
(:age == Lag( :age, 1 )) & (:sex != Lag( :sex, 1 )), "Same age, diff gender",
(:age != Lag( :age, 1 )) & (:sex != Lag( :sex, 1 )), "Diff age, diff gender"
)
)
Espero que ayude.
Esta pregunta no está relacionada con el uso de Select Where() sino con una fórmula de columna.Las preguntas como esta están mejor dirigidas al área de Discusiones generales donde muchos programadores pueden responder.
@Wendy_Murphrey
Hola,
Estoy tratando de escribir una nueva columna en el archivo jmp de Big Data llamado "AgeSex_comp" con una fórmula que contiene una condición larga y algunas. Me gustaría comparar la información de edad y sexo de la fila anterior con la fila siguiente para ver si son iguales o diferentes. Aquí está el Script que escribí, no funciona. ¿Alguna idea de dónde me estoy equivocando?
dt = current data table();
dt << NewColumn("AgeSex_Comp", Character, Nominal, Formula(
FOR(i=1, i<= N Row(dt), i++,
if((:age[Row(i)] == :age[Row(i+1)]) & (:sex[Row(i)] == :sex[Row(i+1)]),"Same age, same gender",
(:age[Row(i)] != :age[Row(i+1)]) & (:sex[Row(i)] == :sex[Row(i+1)]),"Diff age, same gender",
(:age[Row(i)] == :age[Row(i+1)]) & (:sex[Row(i)] != :sex[Row(i+1)]),"Same age, diff gender",
(:age[Row(i)] != :age[Row(i+1)]) & (:sex[Row(i)] != :sex[Row(i+1)]),"Diff age, diff gender"
)
)
)
)