好的,我已经开始熟悉 JMP 并成功编写了我的第一个脚本,用于从数据库中提取、重新排列和格式化数据表。 效果很好并且节省时间。 因为我已经用以下副本开发了这个脚本跳转到 JMP 脚本编写在我的腿上,我自然有兴趣了解剧本。 那么问题来了。
想象一下需要大量不同测量的制造过程。 数据库将所有测试方法放在一列中,将所有测试结果放在另一列中。 为了得到我想要的东西,我需要拆分这张表。 然而,由于我们数据库中的很多内容都来自旧版 Excel 文件,因此由于早期的错误条目,需要对保存测试名称的列进行一些重新编码。 为了获得那段(重新)代码,我通过“列”菜单中的“重新编码...”,这是脚本中我无法理解的唯一部分。 (这通常是一个非常基本的脚本。)
在下面发布的示例中,大写字母和数字反映了实际使用的测试方法名称的变化。 例如,A 是一种测试(例如 pH 测试),B 是另一种测试(例如粘度)。 A(1)、A(2)、... A(n) 将全部重新编码为 A,然后是 B(1),... B(n) 到 B,依此类推。 现在软件如何从这段代码中准确地确定哪些变量属于一起? 我检查了脚本指南和脚本索引,但仍然不明白。 _rcOrig 和 _rcNow,它们是什么意思? 脚本(即各自行中的变量)的排列方式与我的完整脚本副本中的完全相同。
感谢您的答复。
dt << Recode Column(
dt:TestName,
{Map Value(
_rcOrig,
{"A(1)", "A(2)",
"A(3)", "A(4)",
"A(5)", "A(6)", "B(1)",
"B(2)", "C(1)", "C(2)",
"C(3)", "C(4)", "D(1)", "D(2)", "E(1)",
"E(2)", "F(1)", "F(2)", "G(1)", "G(2)",
"H(1)", "H(2)", "I(1)", "I(2)",
"I(3)", "I(4)", "J(1)", "J(2)", "K(1)",
"K(2)", "L(1)", "L(2)",
"M(1)", "M(2)", "M(3)",
"M(4)"},
Unmatched( _rcNow )
)},
Target Column( col1 )
);
dt << End Data Update;
你好,
如果它始终是一个字母,您可能需要创建一个像这样的简单公式:
dt << New Column( "Test_Name", formula( Left(:TestName, 1)));
我使用您提供的 JSL 中的测试值在数据表中创建了一个新列。

然后,我打开“重新编码”对话框并进行重新编码更改。

然后我转到红色三角形并选择
脚本=>保存到脚本窗口
下面是它给我的。
Names Default To Here( 1 );
dt = Data Table( "Big Class" );
dt << Begin Data Update;
col1 = dt << New Column( dt:test );
col1 << Set Name( "test 2" );
dt << Move Selected Columns( {col1}, after( dt:test ) );
dt << Recode Column(
dt:test,
{Map Value(
_rcOrig,
{"A(1)", "A", "A(2)", "A", "A(3)", "A", "A(4)", "A", "A(5)", "A", "A(6)",
"A", "B(1)", "B", "B(2)", "B", "C(1)", "C", "C(2)", "C", "C(3)", "C", "C(4)",
"C", "D(1)", "D", "D(2)", "D", "E(1)", "E", "E(2)", "E", "F(1)", "F", "F(2)",
"F", "G(1)", "G", "G(2)", "G", "H(1)", "H", "H(2)", "H", "I(1)", "I", "I(2)",
"I", "I(3)", "I", "I(4)", "I", "J(1)", "J", "J(2)", "J", "K(1)", "K", "K(2)",
"K", "L(1)", "L", "L(2)", "L", "M(1)", "M", "M(2)", "M", "M(3)", "M", "M(4)",
"M"},
Unmatched( _rcNow )
)},
Target Column( col1 )
);
dt << End Data Update;
在示例中,您可以看到如何为每个值/结果对设置值