JSL-Tipp: Finden Sie eindeutige Werte in einer ListeEines der großen Dinge über die Teilnahme an der JMP Discovery Summit Als Entwickler hört man Fragen und Anregungen von Leuten mit so vielen verschiedenen Anwendungen JMP . Eine JMP-Scripting Language-Frage (JSL) wurde dreimal gestellt. Es lohnt sich also, sie zu teilen. Die Frage ist: "Wie entferne ich doppelte Elemente aus einer Liste?"
Das heißt, die Liste gegeben {"wie", "nicht mögen", "wie", "neutral", "nicht mögen", "wie"} Das Ergebnis sollte sein {"Abneigung", "wie", "neutral"} (Reihenfolge nicht wichtig).
Es gibt wahrscheinlich viele vernünftige Möglichkeiten, dies in JSL zu tun (andere Ideen sind willkommen), aber die einfachste, die ich mir vorstellen kann, ist die Verwendung einer assoziatives Array . Ein assoziatives Array ist eine Sammlung von Schlüsselwertpaaren, bei denen die Schlüssel eindeutig sind. Wenn Sie mehr als ein Schlüsselwertpaar mit demselben Schlüssel hinzufügen, wird nur eines davon beibehalten (das letzte). Wenn Sie sich nicht für die Werte interessieren, ist das assoziative Array tatsächlich ein Satz eindeutiger Schlüssel.
In JSL können Sie ein assoziatives Array auf verschiedene Arten erstellen. Das einzige, was hier jedoch von Interesse ist, ist das Erstellen aus einer Liste. Das resultierende assoziative Array behandelt die Listenwerte als Schlüssel und speichert nur die eindeutigen Schlüssel. Dann können wir das assoziative Array nach einer Liste seiner Schlüssel fragen.
Antworten = { "mögen" . "nicht gefallen" . "mögen" . "neutral" . "nicht gefallen" . "mögen" } ;
Antworten einstellen = Assoziatives Array ( Antworten ) ;
einzigartig Antworten = Antworten eingestellt << Holen Sie sich Schlüssel ;
Ergebnis: {"Abneigung", "wie", "neutral"}
Wenn Sie in JMP keine assoziativen Arrays entdeckt haben, lesen Sie die Dokumente und Beispiele im JSL Scripting Index.
Nun sind Sie an der Reihe: Wie können Sie andere Werte aus einer Liste erhalten? Ich kann mir einen vorstellen, der die Summarize () - Funktion verwendet ...
James Cultra hat geschrieben: Diese Methode funktioniert besser für Matrizen ... James Cultra schrieb:
Diese Methode funktioniert besser für Matrizen, da die assoziative Array-Funktion die Werte in der Matrix zu runden scheint (daher stimmt die eindeutige Liste nicht mit den tatsächlichen Werten in der Matrix überein).
Xan Gregg hat geschrieben: Wenn Sie durch ein assoziatives Ar ... Xan Gregg schrieb:
Wenn Sie ein assoziatives Array durchlaufen (mit den Nachrichten First und Next), werden die Einträge in der Reihenfolge der sortierten Schlüssel zurückgegeben. Wenn die Werte eindeutig sind, können Sie sie als Schlüssel verwenden. Wenn dies nicht der Fall ist, ist eine explizite Sortierung erforderlich. Sie könnten es versuchen JMP Community Forum für Ideen zu letzterem.
Eric Wittry hat geschrieben: Wenn ich einen Schlüssel => Wertepaar habe, und ich ... Eric Wittry schrieb:
Wenn ich ein key => value-Paar habe und die Werte sortieren und die Schlüssel in dieser Reihenfolge zurückgeben möchte (* basierend auf dem sortierten Wert), wie würde ich das in JMP tun? Danke Eric
Leighton Spadone hat geschrieben: // JSL-Matrix-Funktionen, mit denen ... Leighton Spadone schrieb:
// JSL-Matrixfunktionen zum Reduzieren einer Liste auf eindeutige Werte;
// Eine Liste mit doppelten Werten;
answers = {"wie", "nicht mögen", "wie", "neutral", "nicht mögen", "wie"};
// Eine Entwurfsmatrix mit 1 für das erste Vorkommen und 0 für Duplikate zu einer einzelnen Zeile zusammenfassen;
DesignMatrix = VMax (Design (Antworten, Antworten));
// Ergebnis: DesignMatrix = [1 1 0 1 0 0];
// Subset Liste der Antworten auf eindeutige Werte;
UniqueAnswers = Antworten [Loc (DesignMatrix)];
// Ergebnis: UniqueAnsers = {"Abneigung", "like", "neutral"};
Pmroz hat geschrieben: Die Suche nach eindeutigen Werten in einer Liste ... Pmroz schrieb:
Es wurden eindeutige Werte in einer Liste gefunden
im JMP-Diskussionsforum vor einiger Zeit. Hier ist die Funktion
dass ich verwende, was auf der Technik basiert, die Xan zeigte:
/ *
Funktionsname: get_unique_values
Beschreibung: Ermitteln Sie die eindeutigen Werte in einer Liste
Verwendet ein assoziatives Array
Argumente:
in_list Liste, für die eindeutige Werte abgerufen werden sollen
* /
Get_unique_values = Funktion ( { in_list } . { Default Local } .
Tmp = [ => 0 ] ;
Einfügen in ( tmp, in_list ) ;
Tmp << Schlüssel holen;
) ;
Guillaume hat geschrieben: Eine andere Möglichkeit ist, Loop-Anweisung zu verwenden und ... Guillaume schrieb:
Eine andere Möglichkeit ist die Verwendung der Schleifenanweisung und der Loc () - Funktion, um eindeutige Werte zu finden
answers = {"wie", "nicht mögen", "wie", "neutral", "nicht mögen", "wie"};
unique_answers = List ();
Für (i = 1, i <= Nitems (Antworten), i ++,
If (Nrows (Loc (unique_answers, Antworten [i])) == 0,
InsertInto (unique_answers, Antworten [i])
);
);
Michael Crotty hat geschrieben: Eine weitere eingebaute JSL-Funktion, die ... Michael Crotty schrieb:
Eine weitere integrierte JSL-Funktion, die bei diesem Problem helfen kann, ist die Design () - Funktion:
answers = {"wie", "nicht mögen", "wie", "neutral", "nicht mögen", "wie"};
Design (Antworten, <