我想在 JSL 中自動執行重新編碼功能,但我找不到任何有關如何實現它的文件。
這個論壇、JMP 搜尋功能或腳本索引都沒有運氣。工作流程記錄器和日誌檔案只得到最終結果(鎖定表),與儲存腳本到資料表功能相同。
如果可能的話,請移交其中一些設置,但在第一步中並不重要:

此致
毛羅
我認為您可能必須使用 Choose Closest() 建立自己的分組。它似乎有大部分相同的選項,所以也許 JMP 正在使用類似的東西,但它沒有記錄(我認為還有很多其他東西重新編碼也沒有記錄)。

我使用 Choose Closest() 製作了一個小腳本,但現在遇到一個問題,它只在任何形式的循環中執行一次。
等待沒有幫助,我嘗試了很多方案。只要我在一次查看中執行多次 Choose Closest() ,無論輸入如何,它都會傳回相同的字串。
在循環之外,它工作得很好。
我添加了一個測試設置,並將在 JMP 支援處製作票證。
是的,似乎「選擇最近的」在循環內時會做一些奇怪的事情。例如,如果不使用 Eval(EvalExpr()) ,這似乎不起作用,因為如果在循環內運行,它將 abcabcb 與 abcabca 匹配(如果您手動運行它直到失敗,結果是好的)。
以下是我對類似內容的嘗試(我認為 Group Choose Closest 或類似的內容對於 Wish List 來說是一個好主意,它可以完成 Recode 正在做的事情)
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];
));