排除行後,為什麼我的列平均值與透過分發平台計算的平均值不符?計算排除行之前和之後的列平均值透過 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 中修復。