Kombinieren von Einträgen aus N Spalten in einer einzelnen Spalte basierend auf eindeutigen EinträgenHallo,
Ich habe N Spalten mit Zeichendaten, die ich in einer einzigen Spalte zusammenfassen möchte.Für eine bestimmte Zeile können viele Spalten leer sein oder wiederholte/gleiche Werte enthalten (im Vergleich zum Eintrag in einer anderen Spalte).
Ich weiß, dass es die Funktion unter „Spalten“ -> „Dienstprogramme“ -> „Spalten kombinieren“ gibt. Dadurch wird eine neue Spalte generiert, in der alle Felder nebeneinander und durch Trennzeichen angezeigt werden.Ich benötige Ratschläge, wie dieser Vorgang unter Beibehaltung der Eindeutigkeit durchgeführt werden kann (dh die Werte für diese Spalte nur angehängt werden, wenn in dieser Zeile keine anderen Spalten mit demselben Wert vorhanden sind).
Idealerweise würde ich gerne eine Anleitung zum Skripten in JSL erhalten. Allerdings sind auch clevere (noch langwierigere) Ansätze mit JMP-Datentabellen/-funktionen willkommen!
Danke.
Automatisierung und SkripterstellungBetreff: Zusammenfassen von Einträgen aus N Spalten in einer einzigen Spalte basierend auf eindeutigen EinträgenDanke Brady_Brady!!
Funktioniert auch bei mir!!Betreff: Zusammenfassen von Einträgen aus N Spalten in einer einzigen Spalte basierend auf eindeutigen EinträgenVielen Dank, Frau!!
Mir gefällt die Flexibilität dieser Lösung, einschließlich der Möglichkeit, die zu verwendende Start- und Endspaltennummer anzugeben.Mir gefällt wirklich, dass Sie auch die Sortierung in alphabetischer Reihenfolge vorgenommen haben, um die Anzahl der Permutationen zu reduzieren!
Entschuldigung für die verspätete Antwort. Ich dachte zunächst, es gäbe ein Eckproblem, bei dem es nicht funktionierte, aber nachdem ich es mir noch einmal angesehen habe, sehe ich kein Problem mehr.
Betreff: Zusammenfassen von Einträgen aus N Spalten in einer einzigen Spalte basierend auf eindeutigen EinträgenVielen Dank, Txnelson, für die schnelle Antwort und Lösung!
Das funktioniert gut, allerdings sind meine Spaltennamen etwas lang und ich habe viele, daher möchte ich die Liste lieber nicht manuell angeben.
Ich könnte die Spaltennamen mit einem einfachen dt << Get Column Names abrufen und speichern.
Mir hat auch sehr gut gefallen, wie Superuser „ms“ die Einträge in alphabetischer Reihenfolge angeordnet hat, was die Anzahl der Permutationen reduziert (obwohl ich nicht danach gefragt habe).
Entschuldigung für die verspätete Antwort.
Betreff: Zusammenfassen von Einträgen aus N Spalten in einer einzigen Spalte basierend auf eindeutigen EinträgenIch bevorzuge die vorherigen Antworten, aber Sie können dies auch per Point-and-Click tun, was für diejenigen attraktiv ist, die keine Skripte erstellen (Offenbar gibt es Leute, die keine Skripte erstellen!!)
Wie beim assoziativen Array-Ansatz werden in der resultierenden Spalte die Werte vom kleinsten zum höchsten Wert sortiert.
1) Wählen Sie die ursprünglichen Spalten aus und erstellen Sie mit dem Dienstprogramm „Spalten kombinieren“ eine Spalte mit mehreren Antworten.
2) Wählen Sie die neue Spalte aus und wenden Sie das Dienstprogramm „Text auf Spalten“ an. Aktivieren Sie dabei unbedingt das Kontrollkästchen „Indikatoren erstellen“.
3) Nachdem Sie die 10 neuen Indikatorspalten ausgewählt haben, wenden Sie das Dienstprogramm zum Kombinieren von Spalten an und aktivieren Sie dabei unbedingt das Kontrollkästchen „Spalten sind Indikatorspalten“.
Betreff: Zusammenfassen von Einträgen aus N Spalten in einer einzelnen Spalte basierend auf eindeutigen EinträgenHier ist eine Alternative zu Jims Formel. Der Unterschied besteht darin, dass die einzigartige Werte der Die kombinierten Zeichenfolgen werden alphabetisch und nicht nach der Reihenfolge ihres Vorkommens sortiert.
Die Anzahl der Spalten kann durch Festlegen des lokalen Parameters verallgemeinert werden N .
dt = Current Data Table();
dt << New Column("Combined",
Character,
Formula(
Local({dt = Current Data Table(), N = 4},
Concat Items(Associative Array(dt[Row(), 1 :: N]) << get keys, ",")
)
)
);
(Es verwendet die Datentabellen-Matrix-Notation und ist daher nur in JMP 13 oder höher verfügbar.)
Betreff: Zusammenfassen von Einträgen aus N Spalten in einer einzigen Spalte basierend auf eindeutigen EinträgenHier ist eine Möglichkeit, diese Frage zu lösen.Ich habe eine Formel erstellt, die die eindeutigen Werte aus einer Liste von Spalten kombiniert.Ich habe eine Beispieldatentabelle mit der auf die letzte Spalte angewendeten Formel angehängt

Nachfolgend finden Sie die verwendete Formel
VarList = {"One", "Two", "Three", "Four"};
DataList = {};
CountList = {};
DataValue = "";
For( i = 1, i <= N Items( VarList ), i++,
Insert Into( DataList, As Column( VarList[i] ) );
Insert Into( CountList, 0 );
);
For( i = 1, i <= N Items( VarList ) - 1, i++,
For( k = i + 1, k <= N Items( VarList ), k++,
If( DataList[i] == DataList[k],
CountList[k] = CountList[k] + 1
)
)
);
For( i = 1, i <= N Items( VarList ), i++,
If( CountList[i] == 0 & DataList[i] != "",
DataValue = DataValue || "," || DataList[i]
)
);
DataValue = Substr( DataValue, 2 );