複数の列を繰り返してセルを置き換えるみなさん、こんにちは、
私は複数のテーブルを反復処理し、6シグマを超える値を "。"に置き換えようとしています。以下は、大きなクラスを反復処理し、1シグマを超える体重と身長の値をaに置き換えようとしたものです。ただし、意図したとおりに機能していません。私は2つの弦と混同していると思います。
Names Default To Here( 1 );
Clear Globals();
dt = Open("...\SAS\JMP\13\Samples\Data\Big Class.jmp");
mycol = J( N Rows( dt ), 1 );
list_col_names = dt << Get Column Names( String );
For( i = 1, i <= N Items( list_col_names ), i++,
cur_col = (list_col_names[i]);
If( Left( cur_col,1 ) == "ei",
mycol = dt << get as matrix( cur_col );
q25 = Quantile( 0.25, mycol );
q50 = Quantile( 0.50, mycol );
q75 = Quantile( 0.75, mycol );
mycol1 = ((mycol - q50) / ((q75 - q25) / 1.35));
For( r = 1, r <= N Rows( dt ), r++,
If(
mycol1[r] > 1, mycol1[r] = .,
mycol1[r] < -1, mycol1[r] = .
));
);
);
ありがとうございます。
再:複数の列を繰り返し、セルを置き換える私の問題があったと思う、それは素晴らしい作品!ご協力ありがとうございました!
再:複数の列を繰り返し、セルを置き換える私が見ている主な問題は、Hieght列とWeight列を識別できなかったことと、1シグマより上または下の行が見つかったら、値がデータテーブルに書き戻されなかったことです。
これらの問題を修正するためにあなたのコードを修正します。
Names Default To Here( 1 );
Clear Globals();
dt = Open("$SAMPLE_DATA\Big Class.jmp");
mycol = J( N Rows( dt ), 1 );
list_col_names = dt << Get Column Names( String );
For( i = 4, i <= N Items( list_col_names ), i++,
cur_col = (list_col_names[i]);
If( Contains(cur_col,"ei") > 0,
mycol = dt << get as matrix( cur_col );
q25 = Quantile( 0.25, mycol );
q50 = Quantile( 0.50, mycol );
q75 = Quantile( 0.75, mycol );
mycol1 = ((mycol - q50) / ((q75 - q25) / 1.35));
For( r = 1, r <= N Rows( dt ), r++,
If(
mycol1[r] > 1, column(dt,cur_col)[r] = .,
mycol1[r] < -1, column(dt,cur_col)[r] = .
));
);
);