He intentado buscar esto en la guía de ayuda y parece que lo estoy aplicando correctamente, pero parece que no funciona. ¿Alguien podría comprobar si me falta algo?
Tengo una columna que creé a partir de otra columna y redondeé los valores. Necesito mantener solo un rango de filas basado en valores en la nueva columna. Quiero mantener solo los valores de New Y que estén entre 50000 y 50999 y eliminar el resto de las filas.
Aquí está la parte de mi secuencia de comandos que tiene este comando, pero no funciona. Puede ver que la línea comentada antes de la actual en la que estoy trabajando funcionaba, pero ahora podría haber otros valores en el rango de 50000 que debo mantener.
También adjunté mi guión completo si era necesario como referencia.
dt = Current Data Table();
Column( dt, "X coordinate" ) << data type( Numeric ) << Modeling Type( Continuous ) << Format( Best, 12 );
dt << New Column( "New Y", Numeric, Nominal, Width( 5 ), Formula( Round( Y coordinate ) ) );
//dt << select where( :New Y != 50503 );
dt << select where( :New Y < 50000 & :New Y > 50999 );
dt << delete rows;
dt << New Column( "Normalized", Numeric, Continuous, Width( 10 ), Precision( 7 ), Formula( IntenCD / Col Max( IntenCD ) ) );
Gracias de antemano por cualquier ayuda con esto.
Clear Symbols();
Names Default To Here( 1 );
framex_value = "";
lotid_value = "";
w = New Window( "Requested Information", // opens a window with a title and this content...
<<RETURN result=""> 50999 );
dt << delete rows;
dt << New Column( "Normalized", Numeric, Continuous, Width( 10 ), Precision( 7 ), Formula( IntenCD / Col Max( IntenCD ) ) );
// Determine Matrix
xMat = Matrix( 76200 - (framex_value / 2) ) |/ Matrix( 76200 - (framex_value / 2) ) |/ Matrix( 76200 + (framex_value / 2) ) |/
Matrix( 76200 + (framex_value / 2) );
// The yMat is static
yMat = [1, 0.92, 0.92, 1];
// The overall delta
overallDelta = Col Max( dt:Normalized ) - Col Min( dt:Normalized );
//The delta between the lines
withinOrangeDelta = Col Max(
If( dt:X coordinate > (76200 - (framex_value / 2)) & dt:X coordinate < (76200 + (framex_value / 2)),
dt:Normalized,
.
)
) - Col Max( dt:Normalized ) - Col Min( dt:Normalized ) + 1;
Col Min( If( dt:X coordinate > (76200 - (framex_value / 2)) & dt:X coordinate < (76200 + (framex_value / 2)), dt:Normalized, . ) );
// Graph Builer and Delta display
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( dt:X Coordinate ), Y( dt:Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
Text( Boxed, {75000, .94}, "Overall Delta = " || Char( Format( overallDelta, 7, 4 ) ) );
Text( Boxed, {75000, .93}, "Within Frame Delta = " || Char( Format( withinOrangeDelta, 7, 4 ) ) );
);
Report( gb )[AxisBox( 2 )] << Min( .91 );
Report( gb )<<SAVE picture=""></SAVE></RETURN>
Creo que es solo un problema de lógica.
Su declaración de selección donde:
dt << select where( :New Y < 50000 & :New Y > 50999 );
nunca puede ser verdad ya que: New Y no puede ser menor que 50000 y mayor que 50999 al mismo tiempo.
En cambio, quieres:
dt << select where( 50000 <= :New Y <= 50999 );
Oh hombre, gracias. Eso tiene sentido. Reemplacé mi código con esa nueva línea, pero todavía no elimina todas las demás filas que deben eliminarse, por lo que solo estoy graficando los valores de New Y entre 50000 y 50999. ¿Qué más me podría perder?
Sí, aquí está uno de mis conjuntos de datos, ¡gracias por la ayuda!
Hola, todavía no puedo averiguar cómo eliminar todas las coordenadas Y excepto un rango específico. Con la actualización de la ayuda anterior, este es mi nuevo script para la sección en la que estoy trabajando. Así que necesito mantener solo los valores de Y de 50000 a 50999 y eliminar el resto.
dt = Current Data Table();
Column( dt, "X coordinate" ) << data type( Numeric ) << Modeling Type( Continuous ) << Format( Best, 12 );
dt << New Column( "New Y", Numeric, Continuous, Width( 10 ), Formula( Round( Y coordinate, 0 ) ) );
//dt << select where( :New Y != 50503 );
dt << select where( 50000 <= :New Y <= 50999 );
dt << delete rows;
dt << New Column( "Normalized",
Numeric,
Continuous,
Width( 10 ),
Precision( 7 ),
Formula( IntenCD / Col Max( IntenCD ) )
);