基于标准偏差的列单元格的有条件着色我需要根据某个单元格的值是否为列中的单元格上色:1 sigma之内,> 1 sigma但<2 sigma,> 2 sigma但<3 sigma和> 3 sigma,sigma是标准值列的偏差。
回复:基于标准偏差的列单元格的有条件着色该脚本并不完整或效率很高,但可以为您提供一个思路。
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
mu = Col Mean( :weight );
sd = Col Std Dev( :weight );
lo = mu - 3*sd;
hi = mu + 3*sd;
rows = dt << Get Rows Where( lo <= :weight <= hi );
:weight << Color Cells( "Red", rows );
lo = mu - 2*sd;
hi = mu + 2*sd;
rows = dt << Get Rows Where( lo <= :weight <= hi );
:weight << Color Cells( "Yellow", rows );
lo = mu - sd;
hi = mu + sd;
rows = dt << Get Rows Where( lo <= :weight <= hi );
:weight << Color Cells( "Green", rows );
如果行数很多,可以提高布尔测试的效率。
回复:基于标准偏差的列单元格的有条件着色谢谢!有用。回复:基于标准偏差的列单元格的有条件着色嗨,马克,我还有一个与此相关的问题。在我的数据框中,我有10多个列,编辑和粘贴您提供的代码很麻烦。我试图自己创建一个for循环,但是它不起作用。您能为此提供一些建议吗?谢谢!
col = dt <<获取列名(字符串);
nc = nitems(col);
对于(i = 2,i <= nc,i ++,
mu = Col Mean(:Name(col [i]));
sd = Col Std Dev(:Name(col [i]));
lo = mu-3 * sd;
嗨=亩+ 3 * SD;
行= dt <<获取行其中(lo <=:Name(col [i])<= hi);
:Name(col [i])<<彩色单元格(“红色”,行);
行= dt <<获取行其中(:Name(col [i]) hi);
:Name(col [i])<<彩色单元格(“紫色”,行);
lo = mu-2 * sd;
嗨=亩+ 2 * SD;
行= dt <<获取行其中(lo <=:Name(col [i])<= hi);
:Name(col [i])<<彩色单元格(“黄色”,行);
lo = mu-sd;
嗨=亩+ SD;
行= dt <<获取行其中(lo <=:Name(col [i])<= hi);
:Name(col [i])<<彩色单元格(“绿色”,行);
);