Skripten Sie die Funktion „Ähnliche Werte gruppieren“ in der Recode-Plattform mit JSLIch möchte eine Neucodierungsfunktion in JSL automatisieren, kann aber keine Dokumentation dazu finden, wie das geht.
Kein Glück in diesem Forum, JMP-Suchfunktion oder dem Skriptindex. Der Workflow-Recorder und die Protokolldatei erhalten nur das Endergebnis (Sperrtabelle) und dasselbe gilt für die Funktion zum Speichern des Skripts in der Datentabelle.
Wenn möglich, sollten einige dieser Einstellungen übergeben werden, was aber im ersten Schritt nicht wichtig ist:

Beste grüße
Mauro
Automatisierung und SkriptingBetreff: Skripten Sie die Funktion „Ähnliche Werte gruppieren“ in der Recode-Plattform mit JSLIch denke, Sie müssen möglicherweise Ihre eigene Gruppierung mit Choose Closest() erstellen. Es scheint die MEISTEN der gleichen Optionen zu haben, also verwendet JMP vielleicht etwas Ähnliches, das es nicht aufzeichnet (ich denke, es gibt viele andere Dinge, die Recode ebenfalls nicht aufzeichnet).

Betreff: Skripten Sie die Funktion „Ähnliche Werte gruppieren“ in der Recode-Plattform mit JSLIch habe mit Choose Closest() ein kleines Skript erstellt, bin jetzt aber auf das Problem gestoßen, dass es innerhalb einer beliebigen Schleife nur einmal ausgeführt wird.
Warten hat nicht geholfen und ich habe viele Szenarien ausprobiert. Solange ich Choose Closest() mehrmals in einem Look ausführe, gibt es unabhängig von der Eingabe dieselbe Zeichenfolge zurück.
Außerhalb der Schleife funktioniert es einwandfrei.
Ich habe ein Test-Setup hinzugefügt und werde ein Ticket beim JMP-Support erstellen.
Betreff: Skripten Sie die Funktion „Ähnliche Werte gruppieren“ in der Recode-Plattform mit JSLJa, es scheint, als würde Choose Closest einige seltsame Dinge tun, wenn es sich in einer Schleife befindet. Dies schien beispielsweise nicht ohne die Verwendung von Eval(EvalExpr()) zu funktionieren, da es abcabcb mit abcabca abglich, wenn es in einer Schleife ausgeführt wurde (wenn Sie es manuell bis zum Fehler ausführen, ist das Ergebnis in Ordnung).
Unten ist mein Versuch mit so etwas (ich denke, „Group Choose Closest“ oder etwas Ähnliches wäre eine gute Idee für die Wunschliste, die das tun würde, was Recode macht).
names default to here(1);
dt = Open("$DOWNLOADS/Test_Table.jmp");
dt << new column("Ones", Numeric, Continuous, Set Each Value(1)); // summarize...
Summarize(dt, groups = By(:Column 1), counts = Sum(:Ones));
aa_matches = Associative Array(groups);
groups = groups[Rank(Ranking(counts))];
aa_matches[Reverse(groups)[1]] = Reverse(groups)[1]; // highest is group with itself
str_a = Remove From(groups, 1)[1];
While(N Items(groups) > 0,
Eval(EvalExpr(
str_b = Choose Closest(Expr(str_a), Expr(groups), Ignore Case(1), Ignore Whitespace(1), Ignore Nonprintable(1), Max Edit Count(2), Max Edit Ratio(0.25));
));
aa_matches[str_a] = str_b;
str_a = Remove From(groups, 1)[1];
);
dt << New Column("Recoded", Character, Nominal, Set Each Value(
aa_matches[:Column 1];
));