Ich muss die Zellen in einer Spalte basierend auf dem Wert einer bestimmten Zelle einfärben: Innerhalb von 1 Sigma,> 1 Sigma aber <2 Sigma,> 2 Sigma aber
Sigma und> 3 Sigma ist das Sigma der Standard Abweichung der Kolonne.
Dieses Skript ist nicht vollständig oder so effizient, aber es gibt Ihnen eine Idee.
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 );
Sie können die Booleschen Tests auf Effizienz verbessern, wenn Sie über eine große Anzahl von Zeilen verfügen.
Hallo, Mark, ich habe noch eine verwandte Frage aus diesem Beitrag. In meinem Datenframe habe ich mehr als 10 Spalten. Das Bearbeiten und Einfügen des von Ihnen bereitgestellten Codes ist schmerzhaft. Ich habe selbst versucht, eine for-Schleife zu erstellen, aber sie funktioniert nicht. Würden Sie dazu bitte einen Rat geben? Danke!
col = dt << Spaltennamen abrufen (String);
nc = nitems (col);
für (i = 2, i <= nc, i ++,
mu = Col Mean (: Name (col [i]));
sd = Col Std Dev (: Name (col [i]));
lo = mu - 3 · sd;
hi = mu + 3 * sd;
rows = dt << Zeilen abrufen Wo (lo <=: Name (col [i]) <= hi);
: Name (col [i]) << Farbzellen ("Rot", Zeilen);
rows = dt << Get Rows Where (: Name (col [i]) hi);
: Name (col [i]) << Farbzellen ("Lila", Zeilen);
lo = mu - 2 * sd;
hi = mu + 2 * sd;
rows = dt << Zeilen abrufen Wo (lo <=: Name (col [i]) <= hi);
: Name (col [i]) << Farbzellen ("Gelb", Zeilen);
lo = mu - sd;
hi = mu + sd;
rows = dt << Zeilen abrufen Wo (lo <=: Name (col [i]) <= hi);
: Name (col [i]) << Farbzellen ("Grün", Zeilen);
);