J'ai essayé de rechercher cela dans le guide d'aide, et il semble que je l'applique correctement, mais cela ne semble pas fonctionner. Quelqu'un pourrait-il vérifier s'il me 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 que la ligne commentée avant celle sur laquelle je travaille fonctionnait, mais maintenant il pourrait y avoir d'autres valeurs dans la plage de 50000 que je dois conserver.
J'ai également joint mon script entier 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>
Parfait, ça a fait l'affaire. Merci pour l'aide!
Voici la clause Select Where() que vous souhaitez utiliser
dt << select where( :New Y <= 50000 | :New Y >= 50999 );
Salut, je n'arrive 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, voici mon nouveau script pour la section sur laquelle je travaille. Je dois donc conserver uniquement 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 ) )
);Oui, voici l'un de mes ensembles de données, merci pour l'aide !
Oh mec, merci. Cela a du sens. J'ai remplacé mon code par cette nouvelle ligne, mais il ne supprime toujours pas toutes les autres lignes qui doivent être supprimées, de sorte que je ne représente graphiquement que les valeurs New Y entre 50000 et 50999. Que pourrais-je manquer d'autre ?
Je pense que c'est juste un problème de logique.
Votre instruction 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 à 50999 en même temps.
Au lieu de cela, vous voulez :
dt << select where( 50000 <= :New Y <= 50999 );