排除行后,为什么我的列平均值与通过分发平台计算的平均值不匹配?计算排除行之前和之后的列平均值通过 JSL 给出相同的值。 从分发平台获取的结果和想象的不一样。 我在 JSL 中哪里出错了?
Names Default To Here( 1 );
Clear Log();
dt = Open( "$sample_data\Semiconductor Capability.jmp" ); // get data table
//get spec limits into column properties
obj = dt << Manage Spec Limits( Y( dt << Get Column Group( "Processes" ) ), Show Limits All, Save to Column Properties(1) );
obj << close window; // close Manage Spec Limits window
colName = "M1_M1"; // choose column
colMean = Col Mean(dt:colName); show (colMean); // get column mean
colMin = Col Minimum(dt:colName); show (colMin); // get column minimum value
//plot distribution
Distribution(Stack(1), Continuous Distribution(Column(:M1_M1 ), Horizontal Layout(1),Vertical(0), Process Capability(0)));
dt << select where( dt:colName == colMin)<< Hide and Exclude; // hide and exclude the minimim value of the column
colMeanNew = Col Mean(dt:colName); show (colMeanNew); // get column mean again
//plot distribution again
Distribution(Stack(1), Continuous Distribution(Column(:M1_M1 ), Horizontal Layout(1),Vertical(0), Process Capability(0)));



自动化和脚本编写视窗回复:在排除行后,为什么我的列平均值与通过分发平台计算的平均值不匹配?Col Mean() 不像 JMP 平台那样支持排除行。如果您使用:
colMeanNew = Col Mean( If( Excluded( Row State( Row() ) ), ., dt:colName ) );
它会给你你想要的结果。
回复:在排除行后,为什么我的列平均值与通过分发平台计算的平均值不匹配?列函数和行状态关于这一点是一本很好的读物。 如果您不介意排除的行将被视为它们自己的组,您还可以使用
Col Mean(dt:colName, Excluded())
当您在脚本(而不是公式)中以这种方式使用 Col 函数并且您有多个组(排除将有其自己的组)时,您必须小心一点。 您可以将当前行修改为非排除 onw (Row() = some) 或使用 Col 函数创建公式。
其他选择是使用 Summarize()
summarize(dt, my_mean = Mean(dt:colName));
回复:在排除行后,为什么我的列平均值与通过分发平台计算的平均值不匹配?请注意,每次更改行选择时,都会重新计算带有 excepted() 的列公式:
注意:Jmp 会做出意想不到的事情的地方
对于小数据表,这很好:对于大数据表,这会导致明显的延迟。
此问题将在 Jmp 18 中得到修复。