参照を:Name()関数の使用からColumn()およびAs Column()関数の使用に変更することにより、スクリプトを少し変更しました。 また、<< get column names callを少し変更しました。 しかし、それ以外は、あなたは正しい道を歩んでいました。 私のスクリプトはあなたが望むように動作するようです
Names Default To Here( 1 );
dt = Current Data Table();
col = dt << get column names( string, continuous );
nc = N Items( col );
For( i = 1, i <= nc, i++,
mu = Col Mean( Column( col[i] ) );
sd = Col Std Dev( Column( col[i] ) );
lo = mu - 3 * sd;
hi = mu + 3 * sd;
rows = dt << Get Rows Where( lo <= as Column( col[i] ) <= hi );
Column( col[i] ) << Color Cells( "Red", rows );
rows = dt << Get Rows Where( as Column( col[i] ) < lo | as Column( col[i] ) > hi );
Column( col[i] ) << Color Cells( "Purple", rows );
lo = mu - 2 * sd;
hi = mu + 2 * sd;
rows = dt << Get Rows Where( lo <= as Column( col[i] ) <= hi );
Column( col[i] ) << Color Cells( "Yellow", rows );
lo = mu - sd;
hi = mu + sd;
rows = dt << Get Rows Where( lo <= as Column( col[i] ) <= hi );
Column( col[i] ) << Color Cells( "Green", rows );
);
私の元々の目標は、特定のセルの値が1シグマ以内、> 1シグマ以内<2シグマ、> 2シグマ以内<3シグマ、> 3シグマ、シグマまさに列の標準偏差です。ここで、すべての列を反復処理し、すべての列に対して条件付きカラーリングを実行したいと考えていますが、次のforループコードは機能しません。
col = dt <<列名の取得(文字列); nc = nitems(col); for(i = 2、i <= nc、i ++、mu = Col Mean(:Name(col [i])); sd = Col Std Dev(:Name(col [i])); lo = mu-3 * sd; hi = mu + 3 * sd; rows = dt << Get Rows Where(lo <=:Name(col [i])<= hi);:Name(col [i])<< Color Cells( "Red "、rows); rows = dt << Get Rows Where(:Name(col [i]) hi);:Name(col [i])<< Color Cells( "Purple"、rows); lo = mu-2 * sd; hi = mu + 2 * sd; rows = dt << Get Rows Where(lo <=:Name(col [i])<= hi);:名前(col [i])<< Color Cells( "Yellow"、rows); lo = mu-sd; hi = mu + sd; rows = dt << Get Rows Where(lo <=:Name(col [i]) <= hi);:Name(col [i])<< Color Cells( "Green"、rows););