大家好,
我目前正在尝试编写一个脚本,该脚本将自动计算跨温度的测试产量。 我在整个表格中将所有“通过”替换为 1,将“失败”替换为 0,然后计算总和。 下面是我当前的制表窗口及其代码。 我的目标是为每个温度设置第三列,其产量为 = ((Sum at Temp)/(N at Temp)) x 100。 我在实施时遇到困难。 我认为有一种方法可以在 Tabulate 中执行此操作,或者在每个“N”列之后插入一个收益率列并使用公式中的前两列计算收益率,但我无法思考如何以一种方式做到这一点考虑了可变数量的列和测试温度。 任何帮助,将不胜感激! 提前致谢!
list = dt << Get Column Names( string );
Remove From(list, 1, testIndex);
yieldByTest = (dt << Tabulate(
Add Table(
Column Table(
Grouping Columns(:tst_temp),
Statistics(Sum, N, Mean)
),
Row Table(
Analysis Columns(Eval(list))
)
),invisible
)
) << Make Into data Table;
yieldByTest << Set Name("Yield by Test Across Temperature");
使用均值是有道理的。 我不敢相信我没有想到这一点!
我认为这可以像下面的这个例子一样完成。

Names Default To Here( 1 );
// generate yield table
dt1 = New Table( "dt1", add rows( 9 ), New Column( "Process", "Character", values( Repeat( {"A", "B", "C"}, 3 ) ) ) );
dt2 = New Table( "dt2", add rows( 9 ), New Column( "Temperature", "Nominal", values( Repeat( {30, 40, 50}, 3 ) ) ) );
dty = dt1 << join( with( dt2 ), Cartesian Join );
For Each( {dt}, {dt1, dt2}, Close( dt, "NoSave" ) );
dty << set name( "yield" );
dty << New Column( "yield", "Numeric", "Continuous", set each value( Random Integer( 0, 1 ) ) );
// tabulate
dty << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Grouping Columns( :Temperature ), Statistics( Sum, N, Mean ), Analysis Columns( :yield ) ),
Row Table( Grouping Columns( :Process ) )
)
);使用汇总而不是制表可能更容易计算产量:

如果你想使用制表,最简单的方法是使用 % Coluimn 或 % Row,这取决于你的数据是如何格式化的,但你最终可能会得到一个看起来有点奇怪的表格:
