Ho provato a cercarlo nella guida della guida e sembra che lo sto applicando correttamente, ma non sembra funzionare. Qualcuno potrebbe controllare se mi manca qualcosa?
Ho una colonna che ho creato da un'altra colonna e ho arrotondato i valori. Devo mantenere solo un intervallo di righe in base ai valori nella nuova colonna. Voglio mantenere solo i valori New Y compresi tra 50000 e 50999 ed eliminare il resto delle righe.
Ecco la parte del mio script che ha questo comando, ma non funziona. Puoi vedere la riga commentata prima di quella corrente su cui sto lavorando, questo funzionava, ma ora potrebbero esserci altri valori nell'intervallo di 50000 che devo mantenere.
Ho anche allegato il mio intero script, se necessario, come riferimento.
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 ) ) );
Grazie in anticipo per qualsiasi aiuto con questo.
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>
Penso che sia solo un problema logico.
La tua dichiarazione select where:
dt << select where( :New Y < 50000 & :New Y > 50999 );
non può mai essere vero poiché: New Y non può essere inferiore a 50000 e maggiore di 50999 allo stesso tempo.
Invece, vuoi:
dt << select where( 50000 <= :New Y <= 50999 );
Oh amico, grazie. Questo ha senso. Ho sostituito il mio codice con quella nuova riga, ma ancora non elimina effettivamente tutte le altre righe che devono essere eliminate, quindi sto solo rappresentando graficamente i valori New Y tra 50000 e 50999. Cos'altro potrei perdere?
Sì, ecco uno dei miei set di dati, grazie per l'aiuto!
Ciao, non riesco ancora a capire come eliminare tutto tranne un intervallo specifico di coordinate Y. Con l'aggiornamento dell'aiuto precedente, questo è il mio nuovo script per la sezione su cui sto lavorando. Quindi devo mantenere solo i valori Y da 50000 a 50999 ed eliminare il 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 ) )
);