Einzelne Einträge aus einer Liste abrufen?Gibt es eine einfache Möglichkeit, die unterschiedlichen Einträge in einer Liste zu erhalten? (ähnlich der Zusammenfassung einer Tabelle durch Gruppieren von Spalten, um unterschiedliche Einträge in dieser Spalte zu erhalten)
Das Ergebnis könnte entweder eine reduzierte Liste sein, die nur die unterschiedlichen Einträge enthält (wobei wiederholte Einträge entfernt wurden), oder nur eine Zahl, die die Anzahl der unterschiedlichen Einträge angibt.
Bevor ich ein Skript schreibe, möchte ich prüfen, ob es einen einfachen Weg/eine einfache Funktion/Formel gibt. Konnte in der JMP-Hilfe nichts finden ...
Automatisierung und SkriptingGrundlegende Datenanalyse und ModellierungDatenzusammenführung und -bereinigungDatenexploration und -visualisierungBetreff: Einzelne Einträge aus einer Liste abrufen?Eine Möglichkeit ist die Verwendung eines assoziativen Arrays
names default to here(1);
// Create a list
dt=
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
genderList = :sex << get values;
// Get the distinct list of values
distinctList = (associative array(genderList))<<GET keys=""></GET>
{"F", "M"}
Betreff: Einzelne Einträge aus einer Liste abrufen?super, das funktioniert! Vielen Dank, Jim!
Betreff: Einzelne Einträge aus einer Liste abrufen?Der Ansatz über assoziative Arrays lässt sich leicht skripten/merken/anwenden.
Seien Sie vorsichtig, wenn Sie die unterschiedlichen Werte für eine Liste mit Millionen von Werten abrufen möchten.
Eine Problemumgehung:
Speichern Sie die Werte in einer Tabelle und verwenden Sie entweder „Zusammenfassen“ oder die oben erwähnten Tabellen/Zusammenfassungen.
Vielleicht gibt es in JMP in Zukunft eine direkte/schnelle Möglichkeit, eindeutige Werte zu berechnen?
Ich habe diese Hoffnung als Unterthema zu den Kategorien in Spalte N hinzugefügt – und zu allen anderen …
Bitte unterstützen Sie die Idee und stimmen Sie ab : )
Betreff: Einzelne Einträge aus einer Liste abrufen?Eigentlich besteht mein Problem darin, dass ich eindeutige Einträge in einer Zeichenfolgenfolge in einer Tabelle erkennen möchte. Hier habe ich ein Beispiel angehängt: Ursprünglich habe ich die Spalte „Sequenz“ (beliebiges Trennzeichen, hier ist das Trennzeichen „|“). Mein eigentlicher Workaround besteht nun darin, dies in eine Liste umzuwandeln und dann Jims Lösung mit dem assoziativen Array anzuwenden. Aber eine einfache Möglichkeit, eindeutige Werte zu berechnen, wäre sehr willkommen ...
Betreff: Einzelne Einträge aus einer Liste abrufen?Oh ja, hier tun die assoziativen Arrays weh!
Am Ende zählst Du die Einträge. Ist das, was Du brauchst – oder brauchst Du auch den Zwischenschritt (mit der Liste der eindeutigen Einträge)?
Eine schnelle und einfache Möglichkeit, eindeutige Werte zu verarbeiten – hoffen wir, dass die JMP-Entwickler dieses Thema als wirklich nützlich erkennen. So dass es in der nächsten Version implementiert wird …
Betreff: Einzelne Einträge aus einer Liste abrufen?Für meine aktuelle Anwendung benötige ich nur die Anzahl der unterschiedlichen Einträge, nicht die Werte selbst. Aber ich denke, es könnte noch viele weitere Situationen geben, in denen es hilfreich wäre, eine Liste auf ihre eindeutigen Einträge zu reduzieren.
Und ja, hoffen wir auf die Implementierung in der nächsten Version:)
Betreff: Einzelne Einträge aus einer Liste abrufen?In Bezug auf die Geschwindigkeit habe ich gerade überprüft, ob die Zwischenschritte schneller werden, wenn ich den assoziativen Array-Teil durch ein einfaches ersetze
Wenn nicht enthalten, in meine Liste einfügen ... – kein Vorteil.
New Column( "unique entries",
Expression,
Formula(
Local( {nr = N Rows( Current Data Table() )},
If( Row() == nr,
Caption( "done" )
);
Match( :variant,
1, Associative Array( :list from sequence[Empty()] ) << get keys,
2,
myList = {};
For Each( {entry}, :list from sequence,
If( !Contains( myList, entry ),
Insert Into( myList, entry )
)
);
myList;
);
)
)
)
für 1 Mio. Zeilen erhalte ich:

Also 1:0 für assoziative Arrays. Irgendeine bessere Idee?
[Another 2+2 seconds are needed for the columns :list from sequence and :N eindeutige Einträge.
So, no real benefit to get into the ms regime for the intermediate step]
Betreff: Einzelne Einträge aus einer Liste abrufen?- einfach
- schnell
Und:
- nicht gierig
Ich habe gerade versucht, das Timing mit 10 Mio. Zeilen zu überprüfen – und bin stecken geblieben.
JMP stürzt ab und die letzten 60 Sekunden sehen so aus:

Betreff: Einzelne Einträge aus einer Liste abrufen?... also, ich habe es gerade mit 5 Mio. Zeilen probiert - und eine interessante Erkenntnis gewonnen:

Wenn ich die Tabelle speichere, JMP schließe und die Tabelle erneut lade, ist der Speicherverbrauch deutlich geringer als für die Berechnung der Werte nötig!
Auf den ersten Blick dachte ich, es liege am assoziativen Array, aber das Gleiche passiert, wenn ich mylist verwende.
Wie kann ich verhindern, dass die Spaltenformel meinen Speicher auffrisst?
TS-00177710
Betreff: Einzelne Einträge aus einer Liste abrufen?Hier ist eine Funktion für eindeutige Werte, die ich vor einiger Zeit geschrieben habe:
/*
Function Name: get_unique_values
Description: Find the unique values in a list. Uses an associative array
Arguments:
in_list List to get unique values for
*/
Get_unique_values = Function( {in_list},
{Default Local},
tmp = [=> 0];
Insert Into( tmp, in_list );
tmp << get keys;
);
Beispielaufrufe:
a = {1, 1, 1, 2, 3, 3, 3};
b = get_unique_values(a);
print(b);
c = {"Hello", "World", "John", "Ed", "John", "World"};
d = get_unique_values(c);
print(d);
Ausgabe:
{1, 2, 3}
{"Ed", "Hello", "John", "World"}Betreff: Einzelne Einträge aus einer Liste abrufen?Wie kompliziert sind Ihre Sequenzen (sind es nur einzelne Buchstaben?)? Wissen Sie im Voraus, was sie sein könnten? Und wie lang kann die Sequenz sein?
Um nur die Anzahl der Einträge zu berechnen, können Sie eine Kombination aus N Elementen + Assoziativem Array und Wörtern verwenden.
N Items(Associative Array(Words(:sequence, "|")))
Teilweise verwandt Bietet eine schnelle Möglichkeit, eindeutige Werte aus JMP-Objekten (Spalten, Listen) zu erhalten, möglicherweise ähnlich wie Pythons Set
Betreff: Einzelne Einträge aus einer Liste abrufen?
@jthi wrote:N Items(Associative Array(Words(:sequence, "|")))
Vielleicht irre ich mich, aber dieser Vorschlag sieht sehr ähnlich aus wie das, was @katharina_l gepostet hat in
https://community.jmp.com/t5/Discussions/Get-distinct-entries-from-a-list/mp/820530/highlight/true#M99918 ? ?
Betreff: Einzelne Einträge aus einer Liste abrufen?danke Holger und ja, sieht definitiv nach der Funktion aus, die ich gesucht habe. Wäre toll, wenn man sie als Standardfunktion in JMP implementieren könnte.
Betreff: Einzelne Einträge aus einer Liste abrufen?Die Kategorien von Spalte N werden mit JMP19 geliefert.
Für „Einzigartige Gegenstände erhalten“ gibt es einen separaten Wunsch – das Warten auf Kudos.