Werte finden und kategorisierenHallo,
Ich habe das Problem, dass ich einige Daten kategorisieren muss. Die Auswahl der zu kategorisierenden Werte wäre viel einfacher, wenn es einen automatisierten Prozess gäbe. Das Problem ist folgendes: Tabelle mit 3 Spalten (1 Kategorie, 2 Tiefenmessungen, 3 Anzahl Datenpunkte).
1) Ich möchte für jeden See jeweils diejenigen erhalten, die unter 0,5 liegen (siehe Beispieldatei Spalte 2). Das bedeutet, dass 0,5 nicht in die Bewertung für die Auswahl eingehen sollte.
2) Außerdem möchte ich die in Spalte 2 gefundenen Werte nach denen mit den meisten Datenpunkten (N, Spalte 3) sortieren, indem ich die drei tiefsten gefundenen Werte auswähle, die die meisten Daten enthalten, jeweils für jeden Namen der Spalte 1.
3) Um sie zu kategorisieren, möchte ich eine neue Spalte erstellen und 1/2/3 für diejenigen mit den meisten gefundenen Daten zu denen mit den wenigsten Daten dieser drei hinzufügen. Wenn die Anzahl der Datenpunkte in zwei Tiefen gleich ist, sollte die tiefere als 1 oder 2 kategorisiert werden.
Siehe Beispieldatei zum besseren Verständnis :-).
Vielen Dank im Voraus für jede Lösung, falls dies mit jsl möglich ist.
Re: Werte finden und kategorisierenHi @ Pacco ,
Verwenden Sie zufällig JMP 12 (oder früher)? Col Rank() wurde in JMP 13 geändert, um die zusätzlichen Argumente zuzulassen, die Xan verwendet.
Aus den Dokumenten:
JMP 12:
Col Rank(column)
JMP 13:
Col Rank(column, <BYVAR>, <<TIE></TIE></BYVAR>
Re: Werte finden und kategorisierenWenn ich das Skript ausführe und dann eine Teilmenge der markierten Zeilen mit mache
dt << Subset( Copy formula( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) )
Ich bekomme
Alle Spalten sind zwar geordnet, aber innerhalb der eindeutigen Werte von Stationsname und isBelow05. Das wird durch das zweite und dritte Argument von Col Rank() gesteuert. Wenn Sie möchten, dass die Stationen zusammen geordnet werden, entfernen Sie diese By-Variable aus den Col Rank()-Argumenten.
Re: Werte finden und kategorisierenDarf ich fragen wie das Ergebnis aussieht? Mine ordnet die gesamte Spalte. Ich suche jedoch nach einem Ranking für jeden Abschnitt (jede Charge mit demselben Namen, siehe Spalte Stationsname).
Re: Werte finden und kategorisierenDanke für die Ideen, das Auswählen und Abwählen von "suppress eval" hat geholfen. Das Warten 5 hat jedoch nichts geändert!

Re: Werte finden und kategorisierenIch bin mir nicht sicher, was Ihr Problem verursacht.Wenn ich die Datentabelle öffne, die Sie in Ihrer letzten Antwort angegeben haben, sehe ich Ihr Problem.Ich konnte das Problem beheben, indem ich mit der rechten Maustaste auf die Spaltenüberschrift für Rang klickte und Spalteninfo auswählte.Es öffnet das Spalteninfo-Fenster.Wählen Sie „Eval unterdrücken“, wie unten gezeigt, und klicken Sie dann auf die Schaltfläche „Übernehmen“.Deaktivieren Sie „Suppress Eval“ und klicken Sie dann erneut auf die Schaltfläche „Apply“ und prüfen Sie, ob die Werte in der Spalte korrigiert wurden

Das andere, was Sie versuchen sollten, ist, die Spalten "isbelow05" und "rank" zu löschen und das folgende Skript auszuführen.
dt = Current Data Table();
dt << New Column( "isbelow05", formula( :Profildjup <= 0.5 ) );
wait(.5);
dt << New Column( "rank", formula( Col Rank( -(:n rows + :Profildjup), :isbelow05, :Stationsnamn ) ) );
dt << select where( :isbelow05 & :rank <= 3 );
Wenn es funktioniert, liegt das Problem möglicherweise darin, dass Ihre "isbelow05"-Formel nicht abgeschlossen wird, bevor die "Rang"-Spalte generiert wird, und Probleme verursacht.Das
wait(.5);
gibt ihm Zeit, die Erstellung der Spalte "isbelow05" abzuschließen
Re: Werte finden und kategorisierenmhh, das ist seltsam. Ich habe gerade die Beispieldatei von hier erneut heruntergeladen (der Unterschied war, dass ich eine Auswahl mit einer zusätzlichen Spalte getroffen hatte), aber selbst die von mir hochgeladene Beispieldatei zeigt mir den gleichen Fehler, den ich zuvor gepostet habe. Allerdings hat es jetzt Oberflächenwerte mit einer Eins in der Spalte unter 0,5 markiert. (siehe Datei im Anhang)
Ich könnte die Frage auch vereinfachen. Dann müssen die Werte nur noch ausgewählt und nach ihrem Rang in den höchsten Zahlen für jeden Seenamensabschnitt kategorisiert werden.
Re: Werte finden und kategorisierenDas von Xan enthaltene Skript funktioniert hervorragend mit den von Ihnen angehängten Beispieldaten.Was ist der Unterschied zwischen Ihren realen Daten und der Beispieldatentabelle, die Sie angehängt haben?
Re: Werte finden und kategorisierenHallo Greg,
danke für die Antwort und das Skript. Leider funktioniert es mit meinen Daten nicht. Das Ergebnis sind zwei neue Spalten ohne Daten in der ersten Spalte und nur einem Eintrag in der ersten Zelle von Spalte 2 ("4,20533670002011e-315").
Irgendeine Idee, was schief gelaufen sein könnte?
Re: Werte finden und kategorisierenSo etwas sollte helfen, wenn ich es richtig verstehe.
dt = Current Data Table();
dt << New Column( "isbelow05", formula( :Profildjup <= 0.5 ) );
dt << New Column( "rank", formula( Col Rank( -(:n rows + :Profildjup), :isbelow05, :Stationsnamn ) ) );
dt << select where( :isbelow05 & :rank <= 3 );
Wenn Sie mit Tiefe „unterhalb“ numerisch größer meinen, ändern Sie „<= 0,5“ in „>= 0,5“. Danke für das Einfügen der Beispieldatei.