如何製作通用/變量腳本來拆分數據表並執行計算?我經常執行相同的數據表操作和計算,並且有興趣使用腳本將其自動化。
一般步驟是這樣的:

- 拆分錶(按“屬性”列拆分“值”列)> 生成新表
- 生成新列 (C) = A 列 + B 列
- 生成新列 (D) = A 列 / C 列

但是,每個表都有不同的行數和不同的值。當我單擊這些函數並檢查 JMP 生成的腳本時,行數和每列中的值都是硬編碼的。如何使這些完全可變,以便我可以在任何大小的新數據表上運行腳本?
到目前為止,我有一個看起來像這樣的腳本,但它會提示您輸入行數,然後只生成一個空表。我很難找到文檔,所以非常感謝您的幫助!
New Table( "split table",
Add Rows(),
New Script(
"Source",
Data Table() <<
Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property ) ),
New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) ),
New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "C", Numeric, "Continuous", Format( "Best", 12 ), Formula( :Name( "A" ) + :Name( "B" ) ) ),
New Column( "D", Numeric, "Continuous", Format( "Percent", 12, 0 ), Formula( :Name( "A" ) / :Name( "C" ) ) ) )
回复:如何製作通用/變量腳本來拆分數據表並執行計算?嗨吉姆,
抱歉,關於數據表。它似乎在我的電腦上運行良好,所以我只是重新上傳它。
我嘗試了你的腳本,它可以工作,除了一件事:創建列“date”、“A”和“B”是多餘的,因為這些列被分割表函數轉移到新表中。因此腳本變得更加簡單並且完美運行:
Names Default To Here( 1 );
// Create a pointer variable to be able to
// reference the current active data table
dt = Current Data Table();
// Create the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add new columns to the split data table
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);
太感謝了!
回复:如何製作通用/變量腳本來拆分數據表並執行計算?1.您附加的數據表已損壞。我使用文本編輯器打開它,它有已刪除數據的消息。
2.從你的問題的文本中,我想我理解你是如何認為你的腳本結構應該做你想做的事情,但事實上,它只會生成一個空的數據表......正如你所報告的那樣。
3. 這是我認為您想要作為腳本開頭的內容
Names Default To Here( 1 );
// Create a pointer variable to be able to reference
// the current active data table
dt = Current Data Table();
// Creat the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add the new columns to the split data table
dt2 << New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) );
dt2 << New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);