Auswählen doppelter Zeilen in einer DatentabelleIch bin mir sicher, dass das schon einmal angegangen wurde, aber ich kann es im Forum nicht finden, also entschuldige mich, wenn die Antwort so offensichtlich ist.
Ich habe eine große Datentabelle, von der ich weiß, dass sie doppelte Zeilen enthält. Ich möchte diese Duplikate einfach auswählen und entweder löschen oder von der weiteren Analyse ausschließen. Gibt es ein Skript, das dies in Version 8 und Version 9 von JMP tun kann?Betreff: Auswählen doppelter Zeilen in einer DatentabelleWerfen Sie einen Blick auf „Doppelte Zeilen auswählen“ im Skriptindex
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select duplicate rows( Match( :age, :height ) );
Betreff: Auswählen doppelter Zeilen in einer DatentabelleDanke schön! Ich fand dies sehr schnell und hilfreich, um mit Duplikaten umzugehenBetreff: Auswählen doppelter Zeilen in einer DatentabelleDies ist die Methode, die ich verwende, um vollständige Duplikate zu finden. Möglicherweise möchten Sie außerdem die Spalten in der Übersichtstabelle entsperren.
Hier ist das Skript dafür.
dt = current data table();
colList=dt<
show(collist);
for (i=1,i<=nitems(collist),i++,
collist<< lock(0);
);
Betreff: Auswählen doppelter Zeilen in einer DatentabelleHier ist ein allgemeines Skript, das das tut, was ich oben beschrieben habe. Gilt für jede Tabelle, da Spaltennummer und -namen nicht angegeben werden müssen.
dt = Current Data Table();
dt2 = Eval(
Parse(
Eval(
Expr(
"dt << Summary(group(" || Substitute(
Substitute( Char( dt << get column names() ), "}", "" ),
"{", ""
) || "))"
)
)
)
);
dt2 << delete column( Eval( N Col( dt ) + 1 ) );
Das Skript füllt die Gruppe (Spalte1, Spalte2,...) auf, indem es die geschweiften Klammern aus einer Liste von Spalten löscht. Kennt jemand eine einfachere und weniger komplizierte Möglichkeit, eine Listenvariable von Spalten als Argument in Summary() und ähnlichen Funktionen zu verwenden?
Wenn Duplikate durch eine Teilmenge von Spalten und nicht durch alle Spalten definiert werden, besteht eine Möglichkeit darin, im obigen Skript „Spaltennamen abrufen“ durch „Ausgewählte Spalten abrufen“ zu ersetzen. Anschließend müssen die Spalten jedoch zunächst manuell in der Datentabelle ausgewählt und die Übersichtstabelle mit der Originaltabelle aktualisiert werden, um die verbleibenden Spalten wiederherzustellen.
Betreff: Auswählen doppelter Zeilen in einer DatentabelleWenn ganze Zeilen für Duplikate identisch sind, können Sie den Zusammenfassungsbefehl des Tabellenbefehls verwenden. Fügen Sie alle Spalten zum Feld „Gruppe“ hinzu und drücken Sie OK.
Dadurch sollten Sie eine Tabelle ohne Duplikate erhalten. Der einzige Unterschied besteht darin, dass die Tabelle eine neue Spalte „N Zeilen“ enthält und dass sich die Sortierung möglicherweise geändert hat.
Unter dem roten Dreieck bei „Quelle“ im linken Bereich können Sie das Skript kopieren und in ein neues Skriptfenster einfügen, wenn Sie dies mit anderen Tabellen (mit demselben Spaltensatz) wiederholen möchten.
Um die N-Zeilen-Spalte zu entfernen, können Sie die Zeile hinzufügen
Aktuelle Datentabelle() << Spalte löschen (N Zeilen)
zum Drehbuch.Betreff: Auswählen doppelter Zeilen in einer DatentabellePeter,
Entschuldigung für die Unklarheit im Beitrag.
In dem Beispiel, das ich mir anschaue, habe ich 51 Zeilen und 19 Spalten sowohl mit Zeichen- als auch mit numerischen Daten. Ich klassifiziere es als Duplikat, wenn alle Spaltenwerte mit denen einer anderen Zeile (numerisch oder zeichenhaft) identisch sind.
Ich weiß nichts über die JSL, also habe ich versucht, sie einfach in ein neues Skript zu kopieren und einzufügen, und habe mehrere Meldungen erhalten, die im Grunde sagen, dass es nicht funktioniert. Könnte jemand helfen, es in das richtige Format zu bringen?
Skript vom vorherigen Link
dt << CurrentDataTable;
TotalRows = NRows(dt);
eqFlag = 1;
deleteFlag = 0;
For(i=1, i<TOTALROWS></TOTALROWS>
Betreff: Auswählen doppelter Zeilen in einer DatentabelleEine schnelle Suche ergab diesen Thread:
https://community.jmp.com/t5/Discussions/find-and-drop-duplicate-rows/mp/370#M370
Grundsätzlich können Sie mit dem Zusammenfassungsbefehl eine Tabelle ohne Duplikate erstellen.
Grüße,
Peter
Betreff: Auswählen doppelter Zeilen in einer DatentabelleEs gibt verschiedene Möglichkeiten, diese hängen jedoch von Ihren Daten ab. Woher wissen Sie, dass eine Zeile ein Duplikat ist? Wenn also eine Zeile ein Duplikat ist, sind dann alle ihre Spaltenwerte mit denen einer anderen Zeile identisch?
Gibt es einen Spaltenwert (wie einen Schlüssel oder einen Index), den Sie zum Erkennen von Duplikaten verwenden könnten? Oder müssen Sie sich die gesamte Zeile ansehen?
Geben Sie uns noch etwas zum Weitermachen...
Grüße,
Peter