我想自动执行 JSL 中的重新编码功能,但我找不到有关如何实现它的任何文档。
在这个论坛、JMP 搜索功能或脚本索引中没有运气。工作流记录器和日志文件仅获取最终结果(锁定表),并且它与将脚本保存到数据表功能相同。
如果可能的话,请交出其中一些设置(如果可能的话),但在第一步中并不重要:

此致
毛罗
我认为您可能必须使用 Choose Closest() 构建自己的分组。它似乎具有大多数相同的选项,因此也许 JMP 正在使用一些它没有记录的类似内容(我认为还有很多其他内容 recode 也没有记录)。

我使用 Choose Closest() 制作了一个小脚本,但现在遇到一个问题,即它在任何形式的循环中只能执行一次。
等待没有帮助,我尝试了很多方案。只要我一次执行多次 Choose Closest(),它就会返回相同的字符串,无论输入是什么。
在循环之外,它运行良好。
我添加了一个测试设置并将在 JMP 支持处创建一张票。
是的,看起来 Choose Closest 在循环中会做一些奇怪的事情。例如,如果不使用 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];
));