JSL condicional múltiple si declaración que compara valores en dos columnasEn mi tabla de datos, quiero comparar valores en dos columnas diferentes y colocar los resultados de la comparación en una nueva columna. Puedo hacer que funcione usando una fórmula pero no puedo convertirlo en JSL. Necesito la fórmula a continuación como secuencia de comandos JSL.
Si MHD < MTV * -6 => 0
Si MHD > MTV * 6 => 0
Otro => 1
Aquí MHD y MTV son dos columnas de datos con valores continuos numéricos. Estoy comparando valores en estas dos columnas para cada fila.
Intenté el script a continuación pero no funciona.
Nueva columna ("P/F", Numérico, "Nominal", Fórmula (If(:MHD < :MTV * -6, 0, :MHD > :MTV*6, 0, 1)))
Cualquier guía será muy apreciada.
Re: declaración JSL condicional múltiple si compara valores en dos columnasGracias por el gran consejo. Ahora no tengo que cambiar las etiquetas de mis columnas que usan caracteres especiales.Re: declaración JSL condicional múltiple si compara valores en dos columnasJSL está interpretando & etc. como un elemento computacional, no como algo que es parte de un nombre.Eche un vistazo a la función :Name() que puede colocar alrededor de un nombre de columna para asegurarse de que JSL interprete el nombre de columna correctamente.
Si su columna MDH se llamara MDH/PQR, JSL interpretaría el nombre como un cálculo matemático de dividir una variable llamada MDH por una variable llamada PQR.Pero si lo referencias como:
:Nombre( "MDH/PQR" )
todo funcionará bien.
En tu código se vería como
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :Name("MDH/PQR") < :MTV * 6,1,0)))Re: declaración JSL condicional múltiple si compara valores en dos columnasGracias por la rápida respuesta y las excelentes ideas para resolver el problema. Mi script está funcionando ahora. Una cosa más que noté fue que si alguna de las etiquetas de columna tenía un '-' o '&', entonces el script no funcionaría. Una vez que se eliminaron esos caracteres especiales, el script funcionó sin problemas.Re: declaración JSL condicional múltiple si compara valores en dos columnasGracias. Esta solución también funcionó perfectamente.Re: declaración JSL condicional múltiple si compara valores en dos columnasFormula( If( :MDH < :MTV * -6 | :MDH > :MTV * 6, 0, 1 )
¿tal vez?
Re: declaración JSL condicional múltiple si compara valores en dos columnasHay un pequeño problema con JSL en el manejo
:MTV * -6
JSL puede considerar -6 como una resta, no como un número negativo.Por lo tanto, es más prudente referirse a ella como
:MTV* (-6)
para asegurarse de que JMP lo interprete correctamente.
A continuación se muestran un par de formas diferentes de configurar la fórmula para obtener los resultados que desea.
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :MDH < :MTV * 6,1,0)))
//or
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :MDH | :MDH > :MTV * 6,0,1)))