Je dois colorer les cellules dans une colonne en fonction de la valeur d'une cellule donnée: 1 sigma,> 1 sigma mais <2 sigma,> 2 sigma mais
sigma, et> 3 sigma, le sigma est la norme déviation de la colonne même.
Ce script n'est pas complet ni efficace, mais il vous donne une idée.
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
mu = Col Mean( :weight );
sd = Col Std Dev( :weight );
lo = mu - 3*sd;
hi = mu + 3*sd;
rows = dt << Get Rows Where( lo <= :weight <= hi );
:weight << Color Cells( "Red", rows );
lo = mu - 2*sd;
hi = mu + 2*sd;
rows = dt << Get Rows Where( lo <= :weight <= hi );
:weight << Color Cells( "Yellow", rows );
lo = mu - sd;
hi = mu + sd;
rows = dt << Get Rows Where( lo <= :weight <= hi );
:weight << Color Cells( "Green", rows );
Vous pouvez améliorer l'efficacité des tests booléens si vous avez un grand nombre de lignes.
Bonjour, Mark, j'ai une autre question liée à ce post. Dans mon cadre de données, j'ai plus de 10 colonnes, éditer et coller le code que vous avez fourni est pénible. J'ai essayé de créer moi-même une boucle, mais cela ne fonctionne pas. Pourriez-vous donner quelques conseils à ce sujet? Je vous remercie!
col = dt << obtenir les noms de colonne (chaîne);
nc = nitems (col);
pour (i = 2, i <= nc, i ++,
mu = Col Mean (: Nom (col [i]));
sd = Col Std Dev (: Nom (col [i]));
lo = mu - 3 * sd;
hi = mu + 3 * sd;
rows = dt << Get Rows Where (lo <=: Nom (col [i]) <= hi);
: Nom (col [i]) << Cellules de couleur ("Rouge", rangées);
rows = dt << Get Rows Where (: Nom (col [i]) hi);
: Nom (col [i]) << Cellules de couleur ("Violet", rangées);
lo = mu - 2 * sd;
hi = mu + 2 * sd;
rows = dt << Get Rows Where (lo <=: Nom (col [i]) <= hi);
: Nom (col [i]) << Cellules de couleur ("jaune", rangées);
lo = mu-sd;
hi = mu + sd;
rows = dt << Get Rows Where (lo <=: Nom (col [i]) <= hi);
: Nom (col [i]) << Cellules de couleur ("vert", rangées);
)