J'ai essayé de chercher cela dans le guide d'aide, et il semble que je l'applique correctement, mais cela ne semble pas fonctionner. Quelqu'un pourrait-il s'il vous plaît vérifier si je manque quelque chose?
J'ai une colonne que j'ai créée à partir d'une autre colonne et arrondi les valeurs. Je dois conserver uniquement une plage de lignes basée sur les valeurs de la nouvelle colonne. Je souhaite conserver uniquement les valeurs New Y comprises entre 50000 et 50999 et supprimer le reste des lignes.
Voici la partie de mon script qui a cette commande, mais cela ne fonctionne pas. Vous pouvez voir la ligne commentée avant celle sur laquelle je travaille, mais maintenant il pourrait y avoir d'autres valeurs dans la plage de 50000 que je dois conserver.
J'ai également joint tout mon script si nécessaire comme référence.
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 ) ) );
Merci d'avance pour toute aide à ce sujet.
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>
Je pense que c'est juste un problème de logique.
Votre déclaration select where:
dt << select where( :New Y < 50000 & :New Y > 50999 );
ne peut jamais être vrai puisque: New Y ne peut pas être inférieur à 50000 et supérieur à 50 999 en même temps.
Au lieu de cela, vous voulez:
dt << select where( 50000 <= :New Y <= 50999 );
Oh mec, merci. Cela a du sens. J'ai remplacé mon code par cette nouvelle ligne, mais cela ne supprime toujours pas toutes les autres lignes qui doivent être supprimées, de sorte que je ne représente que les valeurs New Y entre 50000 et 50999. Que pourrais-je manquer d'autre?
Oui, voici l'un de mes ensembles de données, merci pour l'aide!
Salut, je ne parviens toujours pas à comprendre comment supprimer tout sauf une plage spécifique de coordonnées Y. Avec la mise à jour de l'aide précédente, c'est mon nouveau script pour la section sur laquelle je travaille. Je dois donc ne conserver que les valeurs Y de 50000 à 50999 et supprimer le reste.
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 ) )
);