So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteLiebe JMP-Community,
Ist es möglich, die numerischen Werte (Ganzzahlen) einer Spalte als Möglichkeit zur „Wertreihenfolge“ einer anderen Spalte zu verwenden?
Ich habe eine Textspalte, die ich gerne nach einer anderen Spalte geordnet hätte, die ganze Zahlen enthält. Als Beispiel habe ich eine Spalte mit dem Namen :Text und eine mit dem Namen :Level.

Standardmäßig ordnet JMP die Spalteneigenschaft „Wertreihenfolge“ wie folgt:

Am liebsten hätte ich es so bestellt:

Was in meinem einfachen Beispiel die gleiche Reihenfolge ist wie die Spalte :Level. Ich kann das natürlich manuell machen, aber in meiner echten Datentabelle habe ich eine Textspalte mit mehreren Dutzend Einträgen, die ich lieber nicht manuell machen würde, sondern stattdessen die Spalte :Level verwenden würde, um die Eigenschaft „Wertreihenfolge“ festzulegen der Spalte :Text.
Gibt es eine Möglichkeit, dies per Skript oder über eine GUI in JMP zu tun?
Danke!,
DS
Erweiterte statistische ModellierungAutomatisierung und SkripterstellungMassenanpassungBetreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteDie Lösung hier ist die Verwendung eines assoziativen Arrays, das eindeutige Schlüssel erfordert. Wenn Sie also doppelte Ebenen haben, wird ein Teil des Textes, den Sie haben, „gelöscht“ (und sie werden vermutlich in der Standardreihenfolge sortiert).
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteHallo !
Ich versuche, eine Spalte (Chargen) nach Werten einer numerischen Datumsspalte zu ordnen, erhalte jedoch ein Problem, bei dem zwei verschiedene Chargen am selben Tag hergestellt wurden.
Warum sollte dies beispielsweise nicht korrekt erfolgen?
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text",
Character,
"Nominal",
Set Values({"A", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD", "EE", "FF"})
),
New Column("Level",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10])
)
);
Die Reihenfolge der Textspalte wäre wie folgt:
Text Ebene
Eine 1
B 2
D 3
F 4
AA 5
BB 6
CC 7
TT 8
EE 9
FF 10
C 2
E 3
Anstelle des gewünschten:
Text Ebene
Eine 1
B 2
C 2
D 3
E 3
F 4
AA 5
BB 6
CC 7
TT 8
EE 9
FF 10
C 2
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteIch stimme zu, @jthi Die Lösung ist die Beste.Manche Leute mögen JSL nicht.Viele Leute kennen die Zeilenreihenfolgeebenen nicht.Excel-Benutzer (ein Kommentar zur Verallgemeinerung folgt) möchten Zeilenreihenfolgeebenen als Standard haben.Das ist also meine Motivation, auf Ihre gute Diskussionsfrage zu antworten.
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteHallo, ja, jetzt verstehe ich, warum Sie das Kontrollkästchen „Benutzerdefinierte Bestellung“ deaktivieren müssen. Das macht Sinn. Das Schöne an der Art und Weise, wie jthi dies tut, ist, dass es unabhängig von der Sortierung der Datentabelle die gewünschte Wertereihenfolge der :Text-Spalte beibehält.Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteIch habe einen Fehler in meiner Beschreibung gemacht, was zu tun ist.Hier ist ein Beispiel mit der Datentabelle „Big Class“.
- Ich habe die Datentabelle nach Höhe sortiert

- Dann ging ich in die Spalteneigenschaft für die Spalte „Name“ und wählte Zeilenreihenfolgeebenen aus, UND ich deaktivierte die Option „Benutzerdefinierte Reihenfolge“.

- Dann habe ich Graph Builder geöffnet und die Namensspalte auf die X-Achse gezogen. Wie zu sehen ist, entspricht die Reihenfolge der X-Achse der Zeilenreihenfolge der Namen

Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteHallo @jthi ,
Vielen Dank für Ihr Feedback. Ja, dieser JSL-Code ist genau das, was ich brauche, da er jede seltsame Anordnung der Spalten :Text und :Level verarbeiten und dann die Wertereihenfolge entsprechend zuweisen kann.
Ich habe den Befehl „Assoziatives Array“ noch nicht erforscht oder viel damit gearbeitet, aber ich muss mich offensichtlich noch genauer damit befassen! Sehr schön, nur 3 Zeilen Code.
Danke!,
DS
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteHallo @txnelson ,
Vielen Dank für Ihr Feedback. Leider funktioniert diese Lösung nicht mit der Spalte :Text. Wenn ich die Tabelle nach der Spalte „:Level“ sortiere und dann die von Ihnen vorgeschlagenen „Row Order Levels“ für die Wertereihenfolge der Spalte „:Text“ anwende, bleibt die Alpha-Reihenfolge der Spalte „:Text“ erhalten, d. h. AA kommt immer noch nach A und so weiter.
Das andere „Problem“ besteht darin, dass die Zeilen aus der Originaldatentabelle, die derzeit nach Datum sortiert sind, durcheinander gebracht werden. Die Spalten „:Text“ und „:Level“ können über die Datumsangaben verteilt sein, und manchmal hilft es, die Tabelle nach Datum sortiert zu halten. Es ist eigentlich kein großes Problem, aber ich weiß, dass es anderen Benutzern, die dann auf die Datentabelle zugreifen würden, nicht gefallen wird.
Danke!,
DS
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteHallo @ron_horne ,
Vielen Dank für Ihr Feedback. Ich bin mit dieser Methode zum Erstellen eines Pareto-ähnlichen Diagramms in Graph Builder vertraut. Ich habe es schon oft verwendet und es ist sehr hilfreich. Leider führe ich neben der Datenvisualisierung noch viele andere Auswertungen mit der Datentabelle durch, daher wäre es hilfreich, eine Lösung zu haben, die portierbar und auf Tabellen mit Tausenden von Zeilen und mehreren Dutzend Textoptionen skalierbar ist. Die beiden anderen Methoden habe ich noch nicht ausprobiert, werde sie aber ausprobieren.
Danke!,
DS
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteBeide @jthi Und @ron_horne schöne Lösungen bieten.Wenn Sie dies jedoch nur auf interaktive Weise tun möchten, müssen Sie nur Folgendes tun:
- Sortieren Sie die Datentabelle nach der Spalte, nach der die Daten sortiert werden sollen
- Gehen Sie in die Spalteneigenschaft „Wertreihenfolge“ für die Spalte, die Sie für die Sortierung verwenden möchten, und wählen Sie „Zeilenreihenfolgeebenen“ aus

Wenn Sie nun die Spalte, in der Sie Zeilenreihenfolgeebenen angegeben haben, als Sortierspalte verwenden, wird die Reihenfolge in der Datentabelle für diese Spalte als Reihenfolge für die Anzeige der Ergebnisse verwendet.
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteHallo @SDF1
Wenn Sie es nur im Graph Builder verwenden müssen, können Sie jede Achse nach der anderen anordnen, wie im Bild. Sie können sogar die Statistik für das Ranking ändern. Dies wird Ihnen nicht weiterhelfen, wenn Sie die Bestellung zum Testen oder zur Verwendung in anderen Analyse- oder Grafikplattformen wünschen.

Was ich in den meisten Fällen mache, ist, eine Tabellenzusammenfassung nach der anderen Variablen zu erstellen und diese zu sortieren. Von dort kopiere ich die Kategorien und füge sie direkt in die Wertreihenfolge ein. Es ist ein Hack, den nicht jeder kennt, aber er funktioniert.
Ron
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteIch weiß nicht, ob es mit der GUI möglich ist, aber Sie können es mit ein paar Schritten per Skript erstellen:
- Erhalten Sie zunächst die korrekt geordnete Textspalte in der Liste
- Fügen Sie der Textspalte mit der vorherigen Liste eine Spalteneigenschaft hinzu
Unten ist eine mögliche Lösung, die zumindest mit dem aktuellen Beispiel funktionieren sollte (öffnen Sie das Protokollfenster, um „Debug“-Ausdrucke zu sehen):
Names Default To Here(1);
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text",
Character,
"Nominal",
Set Values({"A", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD"})
),
New Column("Level",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
)
);
//get values from Level and Text into Associative Array
aA_level_text = AssociativeArray(Column(dt, "Level") << Get Values,Column(dt, "Text") << Get Values);
show(aA_level_text); //debug
ordered_level = aA_level_text << Get Values; //Get values (will be ordered by Level)
Show(ordered_level); //debug
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
//Add Value Ordering Column Property to Text column
Eval(Eval Expr(
Column(dt, "Text") << Set Property("Value Ordering", Expr(ordered_level));
));
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
dt << Clear Column Selection;
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteOkay, ich werde es versuchen
Betreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteDie Verwendung von Ranking() zum „Neuanordnen“ könnte in Ihrem Fall funktionieren
Names Default To Here(1);
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text", Character, "Nominal", Set Values({"FF", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD", "EE", "A"})),
New Column("Level", Numeric, "Continuous", Format("Best", 12), Set Values([10, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 1]))
);
m_text = Column(dt, "Text") << get values;
m_level = Column(dt, "Level") << get values;
orders = Ranking(m_level);
m_text[orders];
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
Eval(Eval Expr(Column(dt, "Text") << Set Property("Value Ordering", Expr(m_text[orders]))));
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debugBetreff: So verwenden Sie eine Spalte zur „Wertreihenfolge“ einer anderen SpalteEs funktionierte! Vielen Dank, jthi!
Betreff: Wie man eine Spalte verwendet, um eine andere Spalte nach Wert zu sortierenInteressant, dass die Spalte „Alter“ im Popup-Menü nicht auswählbar ist. Hat jemand eine Idee, woran das liegen könnte?
Betreff: Wie man eine Spalte verwendet, um eine andere Spalte nach Wert zu sortierenähnliche Beiträge mit eleganten Lösungen:
Festlegen der Wertreihenfolge oder der Wertbezeichnung anhand einer anderen Spalte über ein assoziatives Array
https://community.jmp.com/t5/Discussions/how-to-sort-x-axis-by-another-column-value/mp/442639#M69092 :
Zusammenfassen + Rangindex
Betreff: Wie man eine Spalte verwendet, um eine andere Spalte nach Wert zu sortierenIn späteren Versionen von JMP ist dies möglich, da dort die Option „Andere“ angeboten wird, mit der Sie eine Spalte auswählen können.