JMP-Datentabelle sortieren und Zeilen im JMP-Skript löschen<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo:
Ich bin ein Neuling bei JMP. Ich möchte eine Datentabelle basierend auf den Bedingungen in den ersten beiden Spalten sortieren und formatieren. Die erste Spalte ist eine Textzeichenfolge („LaserID“) und die zweite Spalte ist die Zeit, zu der Daten erfasst werden („Zeit“). Mein Ziel ist es, eine andere Tabelle mit genau der gleichen Anzahl von Spalten wie die ursprüngliche Tabelle abzuleiten, sodass es nur eine Datenzeile einer bestimmten „LaserID“ gibt (dh keine Wiederholung). Die Eliminierung mehrerer Zeilen mit derselben „LaserID“ basiert auf dem Zeitpunkt der Datenerfassung („Zeit“).
Mit anderen Worten: Die neue Tabelle besteht aus einer Zeile mit einer eindeutigen „LaserID“ und Daten, die zum letzten Zeitpunkt erfasst wurden.
Ich füge die ursprüngliche und endgültige Tabelle bei, die ich erreichen möchte. Wir freuen uns über jede Hilfe beim Schreiben eines Skripts für diese Aufgabe.
Betreff: Sortieren der JMP-Datentabelle und Löschen von Zeilen im JMP-SkriptHallo David, ich verwende Ihr Skript auch, um Duplikate zu entfernen, aber ich habe eine Frage: Was wäre, wenn meine Spalte (entspricht Spalte „LaserID“ im Beispiel) ist numerisch und kontinuierlich? Irgendwie würde das Skript in meinem Fall nicht funktionieren ... Wenn ich die Spalteneigenschaften so ändere, dass sie „Zeichen“ sind, funktioniert das Skript.
Danke.
Betreff: Sortieren der JMP-Datentabelle und Löschen von Zeilen im JMP-SkriptSie haben zwei Skriptantworten erhalten. Wenn Sie dies interaktiv tun möchten, probieren Sie diese Schritte aus.
Sortieren Sie die Tabelle nach LaserID Und Zeit .

Erstellen Sie dann eine neue Spalte mit einer Formel, um die Zeilen auszuwählen, in denen die LaserID in der aktuellen Zeile stimmt nicht mit überein LaserID in der nächsten Reihe. Da die Tabelle sortiert ist nach LaserID Und Zeit Sie erhalten die letzte Zeile jeder LaserID-Serie.
Der Trick besteht darin, eine Spalte mit dem Datentyp zu verwenden Zeilenstatus und das Ausgewählter Staat Zustandsfunktion in der Formel.
Wählen Spalten -> Neue Spalte... und setzen Sie den Datentyp auf Zeilenstatus .

Fügen Sie dann a hinzu Formel.

Beginnen Sie für die Formel mit Zeilenstatus -> Ausgewählter Status .

Fügen Sie dann den Vergleich in die Funktion Selected State() ein. Dieser Vergleich verwendet die Lag()-Funktion mit einem -1-Argument zum Vergleich mit dem Wert von LaserID in der nächsten Reihe.

Jetzt müssen Sie nur noch die Zeilenzustände in Ihrer neuen Spalte in den aktiven Zeilenzustandsbereich kopieren, indem Sie auf das Sternsymbol vor dem Spaltennamen klicken.

Jetzt können Sie es verwenden Tabellen->Teilmenge , um die ausgewählten Zeilen zu unterteilen.

Ich hoffe das hilft!
-Jeff
Betreff: Sortieren der JMP-Datentabelle und Löschen von Zeilen im JMP-SkriptHier ist ein alternativer Ansatz, der tabulate mit max und dann update verwendet:
dt1 = Datentabelle ( "Initial" ) ;
tab1 = dt1 << Tabellieren (
Systemsteuerung anzeigen ( 0 ) ,
Tabelle hinzufügen (
Spaltentabelle ( Analysespalten ( : Zeit ) , Statistiken ( Max ) ) ,
Zeilentabelle ( Spalten gruppieren ( : LaserID ) )
) , unsichtbar
) ;
dt2 = tab1 << In Datentabelle umwandeln ;
tab1 << Fenster schließen () ;
dt2 << Aktualisieren (
Mit ( dt1 ) ,
Spalten anpassen ( : LaserID = : LaserID , : Name ( „Max(Zeit)“ ) = : Zeit ) ,
Fügen Sie Spalten aus der Aktualisierungstabelle hinzu (
: PRF ,
: Name ( „Leistung (W)“ ) ,
: Name ( „Pmon(W)“ ) ,
: PRF2 ,
: Name ( „Leistung2(W)“ ) ,
: Name ( „Pmon2(W)“ )
)
) ;
Betreff: JMP-Datentabelle sortieren und Zeilen im JMP-Skript löschenSo etwas sollte es tun:
Holen Sie sich die neueste Zeile = Funktion ({ dt , AUSWEIS } , { Standardmäßig lokal } ,
// Dies kann viel einfacher sein, wenn wir von der Datum-Uhrzeit-Reihenfolge ausgehen!
//Nur die Zeilen abrufen, die mit der angegebenen Laser-ID übereinstimmen
lstRows = dt << Zeilen wo abrufen ( : Laser-ID == AUSWEIS ) ;
//Erhalte die entsprechenden Zeiten als Liste
lstTimes = Spalte ( dt , "Zeit" )[ lstRows ] ;
// Maximale Zeit ermitteln
loc = Loc Max ( lstTimes ) ;
// die Zeile zurückgeben, die die maximale Zeit enthält
lstRows [ loc ]
) ;
//Quelldatentabelle
dt = Datentabelle ( "Initial" ) ;
// Liste der eindeutigen Werte für die Laser-ID abrufen
Zusammenfassen ( lstIDs = Von ( : Laser-ID )) ;
// Leere Abschlusstabelle erstellen
newDt = dt << Teilmenge ( Formeln kopieren ( 0 )) ;
newDt << Wählen Sie „Alle Zeilen“ aus ;
newDt << Zeilen löschen ;
newDt << Name einsetzen ( "Finale" ) ;
// für jedes Ergebnis eine Zeile erstellen
Spalte ( newDt , „Laser-ID“ ) << Werte festlegen ( lstIDs ) ;
//Durch jede ID iterieren, um die Zeile mit dem neuesten Datum zu finden
Für ( ich = 1 , ich <= NItems ( lstIDs ) , ich ++,
aktuelleID = lstIDs [ ich ] ;
R = Holen Sie sich die neueste Zeile ( dt , aktuelleID ) ;
zeigen ( R ) ;
//Werte aus der r. Zeile in die neue Datentabelle einfügen
Für ( C = 1 , C <= NCols ( dt ) , C ++,
Spalte ( newDt , C )[ ich ] = Spalte ( dt , C )[ R ]
)
) ;