在 JSL 中记录并保留大多数初始值你好,
我有一列概率。这些大多只是 0 到 1 之间的数字。但是,对于 100% 的概率,我得到的结果是 100 而不是 1。我解决这个问题的想法是简单地使用重新编码函数,然后将所有出现的“100”替换为“1”。
我正在使用的代码如下:
dt << Recode Column (
:"probability"n,
{IF( _rcNOW == 100, 1)},
Target Column (:"probability"n)
);这在一定程度上有效,问题是,在所有概率小于 100 的情况下,更新后的列都是空的。这是因为 IF 语句不知道在这种情况下该做什么。有没有办法告诉它在这种情况下应该保留原始值?
自动化和脚本数据混合和清理回复:在 JSL 中记录并保留大多数初始值在 JMP 中交互执行此操作,JMP 将为您创建一个脚本。例如,我有一张表

我希望把 100 改成 1


JMP 为您创建脚本

你可以把它清理干净,稍微修改一下,让它看起来像这样
dt << Recode Column(
dt:Prob,
{Map Value(_rcOrig, {100, 1}, Unmatched(_rcNow))},
Target Column(:Prob)
);
JMP 基本上为我创建了这个脚本,而无需我编写任何 JSL。
回复:在 JSL 中记录并保留大多数初始值谢谢,效果非常好!(事后看来很明显)。
确实,我可以毫无问题地以交互方式进行操作,并且我可能必须在不同的文件上运行它,所以我更喜欢脚本解决方案。
“映射值”是什么意思?(或者这是交互式方法?)
回复:在 JSL 中记录并保留大多数初始值我认为你可以在 else 语句中使用 _rcNOW
dt << Recode Column(
:"probability"n,
{If(_rcNOW == 100,
1
, _rcNOW
)},
Target Column(:"probability"n)
);
但如果您只想将 100 改为 1,使用 Map Value(最基本的重新编码操作)可能更简单。我认为您可以从 Recode 菜单以交互方式执行此操作。