No se puede ejecutar lógica booleana usando el script jmp en la fórmula de la tablaHola,
Estoy intentando ejecutar un script simple que seleccionará y luego ocultará y excluirá puntos que estén a más de 100 mm de distancia radial desde el centro.
Para simplificar la depuración, divido esto en dos scripts: el primero genera una columna con la fórmula de distancia radial Radial = (x^2 + y^2)^(1/2) y el segundo evalúa esta fórmula, seleccionando y ocultando filas donde Radial > 100.
Lamentablemente, esto no funciona. Por alguna extraña razón, la evaluación solo funciona con esta fórmula hasta un valor determinado. Radial > (cualquier valor superior a 30) selecciona todas las filas.
Puedo ver dos soluciones:
1) Escriba los valores en la columna radial, no en la fórmula en sí. (Los valores se evalúan correctamente, la fórmula no). No estoy seguro de cómo hacer esto.
2) Comprenda y corrija el problema para que la fórmula pueda evaluarse frente a un valor mayor que 30.
Sería aceptable una respuesta con un guión o una explicación interactiva. Me gustaría resolver este problema y aprender de él.
¡Gracias!
Dave
// script for creating the Radial column<BR />dt1 = Current Data Table ();
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));<BR /><BR />// script for evaluating the Radial formula<BR />dt =Current Data Table();<BR />dt << Clear Row States; <BR />dt << Select where(Radial < 100);<BR />dt << hide and exclude;<BR />
Combinación y limpieza de datosRe: No se puede realizar la lógica booleana usando el script jmp en la fórmula de la tablaEstoy adivinando un poco, pero creo que su problema con Radial vs Radial 1 es que no define correctamente el alcance de su variable de columna.en su declaración
dt << Select where((Radial 1> 100) | (Radial 1< 30) | (Pits Only > mf));
debe colocar un ":" delante de los nombres de las columnas :Radial 1 y :Pits Only.La razón por la que el script funciona con Radial 1 es que no hay una variable de memoria llamada Radial 1 con la que JMP pueda confundirse.Supongo que en algún momento de sus intentos de codificación, accidentalmente creó una variable de memoria de Radial, por lo que cuando especificó
dt << Select where((Radial> 100) | (Radial< 30) | (Pits Only > mf));
JMP estaba reemplazando el valor de Radial con el valor de las variables de memoria, no el valor de la columna Radial.
Re: No se puede realizar la lógica booleana usando el script jmp en la fórmula de la tablaGracias por responder Jeff.
Pegar la última línea de su secuencia de comandos en la mía no resolvió el problema. Sin embargo, pude encontrar una solución cambiando el nombre de la columna a "Radial 1" y agregando una línea con Eval Formula al final. No estoy seguro de por qué esto funciona. La tabla de datos tiene unas 1300 filas con 15 columnas, cada número tiene un ancho de 10 a 12.
Los siguientes dos scripts funcionan. Los estoy pegando en su totalidad. Las otras líneas evalúan la profundidad y distribución del tajo.
¿Alguna idea de por qué funcionaron las modificaciones? He estado en esto la mayor parte del día.
Script 1: Crear columnas "Solo pozos" y "Radial 1"
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Pits Only", Formula (If( :Name( "Height (mm)" ) <= 0, :Name( "Height (mm)"), 0 )) );
dt1 << New Column( "Radial 1", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
dt1 << Eval Formula;
obj = dt1 << Distribution( Column( :Pits Only), Horizontal Layout( 1 ), Count Axis);
Script 2: Ocultar y excluir filas con Pits Only > 10 o Radial 1 > 100 o Radial 1 < 30
dt =Current Data Table();
dt << Clear Row States;
win = New Window( "Feature Depth" , <<MODAL> 100) | (Radial 1< 30) | (Pits Only > mf));
dt << hide and exclude;</MODAL>
Re: No se puede realizar la lógica booleana usando el script jmp en la fórmula de la tablaMe temo que tengo problemas para reproducir cualquier problema aquí. Aquí está el script con el que solía probar.
dt1 = New Table( "Community 416651 Select Where",
Add Rows( 1000000 ),
New Column( "x coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5 ) ),
Set Selected
),
New Column( "y coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5, 20 ) ),
)
);
dt1 << New Column( "Radial",
Formula(
(X coordinate ^ 2 + Y coordinate ^ 2) ^ (1 / 2)
)
);
dt1 << Select where( Radial < 60 );
Entonces, vamos a necesitar un poco más de detalles sobre su secuencia de comandos y su tabla de datos.
¿Qué tan grande es su tabla de datos? ¿Qué más está haciendo tu guión?
Re: No se puede realizar la lógica booleana usando el script jmp en la fórmula de la tablascript para crear la columna Radial
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
script para evaluar la fórmula Radial
dt =Current Data Table();
dt << Clear Row States;
dt << Select where(Radial < 100);
dt << hide and exclude;