Doppelte Zeilen mit Zeitstempel entfernenHallo,
Ich habe eine Beispieldatentabelle angehängt, in der ich mit den Spalten TimeStamp,Tool doppelte Zeilen innerhalb des Datensatzes entfernen möchte.
Kriterien für die Vervielfältigung:
Zeitstempel, die innerhalb von 6 Minuten auf demselben Tool liegen, werden als Duplikate betrachtet und diese Zeilen müssen entfernt werden.
Kann jemand helfen, wie dies in JSL erreicht werden kann?
Vielen Dank!
@txnelson
AnalytikDatentabelleSkriptingFensterBetreff: Doppelte Zeilen mit Zeitstempel entfernenIch glaube, dies wird Ihnen ein Beispiel geben, wie Sie mit Ihrem Problem fortfahren können
Names Default To Here( 1 );
dt = Current Data Table();
// Loop through the data table deleting all duplicate rows
i = 1;
While( i <= N Rows( dt ),
// Find the upper and lower bounds to match on
lower = :timeStamp[i] - In Minutes( 6 );
upper = :timeStamp[i] + In Minutes( 6 );
// Find the rows that match
theRows = dt << get rows where( :timeStamp > lower & :timeStamp < upper );
// Remove the current row from the list. We do not want to delete it
Try( theRows[1] = [] );
// Delete the remaining rows
Try( dt << delete rows( theRows ) );
// Increment the row to work on
i++;
);
Betreff: Doppelte Zeilen mit Zeitstempel entfernenHi @psundar6 ,
@txnelson bietet eine sehr gute Lösung.
Ein alternativer Ansatz mit Tabellensortierung und Spaltenformel könnte interaktiv oder durch Skripting wie folgt erfolgen:
dt = current data table();
dt << Sort(
By( :TimeStamp, :Tool ),
Replace Table,
Order( Ascending, Ascending )
);
dt << New Column( "to delete",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Formula( If( :Tool == Lag( :Tool, 1 ) & Date Difference( Lag( :TimeStamp, 1 ), :TimeStamp, "Minute" ) > 6, 1, 0 ), eval formula )
);
dt:to delete << suppress eval(true);
dt<< delete rows (dt<< get rows where (:to delete == 1));
lass es uns wissen, ob es für dich funktioniert.
Betreff: Doppelte Zeilen mit Zeitstempel entfernenHallo Ron,
Ich habe Ihre Lösung ausprobiert und sehe ein Problem mit dem Ergebnis.
Ich habe das Ergebnis der Ausführung Ihres Codes angehängt. Es scheint, als würde es aus irgendeinem Grund nicht ein paar doppelte Einträge erfassen.
Vielen Dank.
Betreff: Doppelte Zeilen mit Zeitstempel entfernenDas funktioniert, Danke!