如何制作通用/变量脚本来拆分数据表并执行计算?我经常执行相同的数据表操作和计算,并且有兴趣使用脚本将其自动化。
一般步骤是这样的:

- 拆分表(按“属性”列拆分“值”列)> 生成新表
- 生成新列 (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" ) )
);