通過將引用從使用:Name()函數更改為使用Column()和As Column()函數,我對腳本進行了一些修改。 我還稍微更改了<< <<獲得列名稱的調用。 但是除此之外,您走在正確的道路上。 我的腳本似乎可以按需工作
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 sigma,> 1 sigma但<2 sigma,> 2 sigma但<3 sigma和> 3 sigma,即sigma是該列的標準偏差。現在,我希望遍歷所有列並對所有列執行條件著色,但是如下所示的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 <<獲取行,其中(lo <=:Name(col [i])<= hi);:Name(col [i])<<顏色單元格(“紅色“,行);行= dt <<獲取行,其中(:Name(col [i]) hi);:Name(col [i])<<顏色單元( “紫色”,行); lo = mu-2 * sd; hi = mu + 2 * sd;行= dt <<獲取行其中(lo <=:Name(col [i])<= hi);:Name (col [i])<<彩色單元格(“黃色”,行); lo = mu-sd; hi = mu + sd; rows = dt <<獲取行,其中(lo <=:Name(col [i]) <= hi);:Name(col [i])<<彩色單元格(“綠色”,行););