Ich habe versucht, dies in der Hilfe nachzuschlagen, und es sieht so aus, als würde ich es richtig anwenden, aber es scheint nicht zu funktionieren. Könnte jemand bitte überprüfen, ob mir etwas fehlt?
Ich habe eine Spalte, die ich aus einer anderen Spalte erstellt und die Werte gerundet habe. Ich muss nur einen Bereich der Zeilen basierend auf den Werten in der neuen Spalte beibehalten. Ich möchte nur neue Y-Werte zwischen 50000 und 50999 beibehalten und den Rest der Zeilen löschen.
Hier ist der Teil meines Skripts, der diesen Befehl enthält, aber nicht funktioniert. Sie können sehen, dass die auskommentierte Zeile vor der aktuellen, an der ich arbeite, funktioniert hat, aber jetzt könnte es andere Werte im Bereich von 50000 geben, die ich beibehalten muss.
Bei Bedarf habe ich auch mein gesamtes Skript als Referenz angehängt.
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 ) ) );
Vielen Dank im Voraus für jede Hilfe dabei.
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>
Ich denke, es ist nur ein logisches Problem.
Ihre select where-Anweisung:
dt << select where( :New Y < 50000 & :New Y > 50999 );
kann niemals wahr sein seit: New Y kann nicht kleiner als 50000 sein und größer als 50999 gleichzeitig.
Stattdessen möchten Sie:
dt << select where( 50000 <= :New Y <= 50999 );
Oh Mann, danke. Das macht Sinn. Ich habe meinen Code durch diese neue Zeile ersetzt, aber es werden immer noch nicht alle anderen Zeilen gelöscht, die gelöscht werden müssen, sodass ich nur die neuen Y-Werte zwischen 50000 und 50999 grafisch darstelle. Was könnte ich sonst noch vermissen?
Ja, hier ist einer meiner Datensätze, danke für die Hilfe!
Hallo, ich kann immer noch nicht herausfinden, wie alle bis auf einen bestimmten Bereich von Y-Koordinaten gelöscht werden können. Mit dem Update von der vorherigen Hilfe ist dies mein neues Skript für den Abschnitt, an dem ich arbeite. Ich muss also nur Y-Werte von 50000 bis 50999 beibehalten und den Rest löschen.
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 ) )
);