Salut tout le monde,
J'ai ce type de tableau de données (voir fichier joint). Je veux détecter toutes les valeurs qui sont en dehors de 2 valeurs seuils (-0,5 et 0,5) et les remplacer par les valeurs plafonds. Par exemple : -5.30, -6.00, -11.56 doivent être remplacés par la même valeur de -5.00, et 5.30, 6.00 et 11.56 remplacés par 5.00.
Avez-vous une suggestion pour le faire d'une manière simple?
vous remerciant à l'avance
Merci beaucoup MS,
Votre première option fonctionne très bien !
Pennsylvanie
Si vous envisagez de le faire avec JSL, il existe plusieurs façons.
Par exemple, vous pouvez simplement boucler sur les colonnes et remplacer conditionnellement les cellules
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;
);
Une alternative (JMP 13) consiste à travailler avec des tables de données sous forme de matrices utilisant des indices. La syntaxe prend également en charge l'affectation, c'est-à-dire le remplacement des valeurs de cellule. Voici un exemple :
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);