Hola a todos,
Tengo este tipo de tabla de datos (ver archivo adjunto). Quiero detectar todos los valores que están fuera de los 2 valores de umbral (-0,5 y 0,5) y reemplazarlos por los valores máximos. Por ejemplo: -5.30, -6.00, -11.56 debe reemplazarse por el mismo valor de -5.00, y 5.30, 6.00 y 11.56 reemplazado por 5.00.
¿Tienes alguna sugerencia para hacer eso de una manera simple?
Agradeciendotelo de antemano
Muchas gracias MS
¡Tu primera opción funciona muy bien!
Pensilvania
Si piensas en hacer esto con JSL hay varias maneras.
Por ejemplo, podría simplemente pasar sobre las columnas y reemplazar las celdas condicionalmente
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;
);
Una alternativa (JMP 13) es trabajar con tablas de datos como matrices usando subíndices. La sintaxis también admite la asignación, es decir, la sustitución de valores de celda. Aquí hay un ejemplo:
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);