皆さん、こんにちは。
私はこのタイプのデータテーブルを持っています(添付ファイルを参照) 2つのしきい値(-0.5と0.5)の外側にあるすべての値を検出し、それらを上限値で置き換えます。例えば、-5.30、-6.00、-11.56は同じ値の-5.00に、5.30、6.00、および11.56は5.00にそれぞれ置き換える必要があります。
あなたは簡単な方法でそれをするために何か提案がありますか?
よろしくお願いします
JSLでこれを行うことを考えているなら、いくつかの方法があります。
たとえば、単純に列をループして、条件付きでセルを置き換えることができます。
dt = Data Table("test.jmp");
For(i = 8, i <= N Col(dt), i++,
ur = dt << get rows where(Column(dt, i)[] > 0.5);
lr = dt << get rows where(Column(dt, i)[] < -0.5);
Column(dt, i)[ur] = 5;
Column(dt, i)[lr] = -5;
);
代替案(JMP 13)は、添字を使用してデータ表を行列として処理することです。構文は代入、すなわちセル値の置き換えもサポートします。これが例です:
dt = Data Table("test.jmp");
t = 0.5; // Treshold value
c = 5; // Ceiling value
nr = N Row(dt);
nc = N Col(dt);
M = dt[1 :: nr, 8 :: nc];// Matrix with all cells from col 8 to end of table
U = M <= t; // Below upper limit?
L = M >= -t; // Above lower limit?
//Assign treshold values to data table
dt[1 :: nr, 8 :: nc] = M :*</img> (U & L) + c * (!U - !L);