好的,我已經開始熟悉 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;
在示例中,您可以看到如何為每個值/結果對設置值