Ciao a tutti,
Ho questo tipo di tabella dei dati (vedi file allegato). Voglio rilevare tutti i valori che sono al di fuori di 2 valori di soglia (-0,5 e 0,5) e sostituirli con i valori del soffitto. Ad esempio: -5.30, -6.00, -11.56 deve essere sostituito dallo stesso valore di -5.00 e 5.30, 6.00 e 11.56 sostituito da 5,00.
Hai qualche suggerimento per farlo in un modo semplice?
ringraziandola in anticipo
Grazie mille MS,
La tua prima opzione funziona molto bene!
PAPÀ
Se pensi di farlo con JSL ci sono diversi modi.
Ad esempio, puoi semplicemente eseguire il loop delle colonne e sostituire le celle in modo condizionale
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;
);
Un'alternativa (JMP 13) consiste nel lavorare con tabelle di dati come matrici che utilizzano gli indici. La sintassi supporta anche l'assegnazione, ovvero la sostituzione dei valori delle celle. Ecco un esempio:
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);