Wie erhält man die Zeilennummer farbiger Zellen in einer Spalte und weist ihr in einer neu erstellten Spalte ein Tag (z. B. „1“) zu?Ich habe Color Out of Spec Values() verwendet, um Spezifikationsfehler in meinen Messdaten farblich zu kennzeichnen. Ich habe mehrere Spalten mit Messdaten und die außerhalb der Spezifikation liegenden Werte für jede Spalte werden entsprechend der Spezifikation für jede Parameterspalte farblich gekennzeichnet.
Ich möchte für jede Parameterspalte eine Nachbarspalte erstellen, die eine "1" vergibt, wenn die Zelle eingefärbt ist, andernfalls eine "0".
Wie erreicht man dies über JSL?
Automatisierung und SkriptingWindowsBetreff: Wie erhalte ich die Zeilennummer farbiger Zellen in einer Spalte und weise ihr in einer neu erstellten Spalte ein Tag (z. B. „1“) zu?wow, tolle Idee – über das Spaltenskript!
Das Coole an JMP:
Die Problemumgehungen : )
Das nicht so Coole in JMP:
Die Workarounds für die Workarounds.
Um die Werte außerhalb der Spezifikation ohne den Umweg über Farbe direkt zu erhalten, stimmen Sie bitte ab: :folded_hands: liegt innerhalb der Spezifikation (Wert)
Betreff: Wie erhalte ich die Zeilennummer farbiger Zellen in einer Spalte und weise ihr in einer neu erstellten Spalte ein Tag (z. B. „1“) zu?Verwenden Sie keine For-Schleife und verwenden Sie << move selected columns, um Ihre Spalten nach der angegebenen Spalte zu verschieben.
Mehr anzeigen...
Names Default To Here(1);
get_colored_cells = Function({dt, colname}, {Default Local},
colscript = Column(dt, colname) << Get Script;
l = Substitute(Name Expr(colscript), Expr(New Column()), List());
colored_cells = {};
Try(
colors = l["Color Cells"];
If(Type(colors[1]) == "List",
jmptrickery = 1,
jmptrickery = 0
);
For Each({color}, colors,
If(jmptrickery,
Insert Into(colored_cells, color[2]),
Insert Into(colored_cells, color)
)
);
);
Return(Matrix(colored_cells));
);
create_failed_column_after = function({dt, colname}, {Default Local},
curname = Column(dt, colname) << get name;
failed_rows = get_colored_cells(dt, colname);
row_vals = J(1, N Rows(dt), 0);
row_vals[failed_rows] = 1;
new_col = dt << New Column((curname || "_FAIL"), Numeric, Nominal, Values(row_vals));
dt << Move Selected Columns(new_col, After(Column(dt, colname)));
return(new_col);
);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
col_names = dt << Get Column Group("Processes");
dt << show window(0);
wait(0);
ps = dt << Process Screening(
Process Variables(Eval(col_names)),
Spec Limits Dialog("No (skip columns with no spec limits)")
);
ps << Color Out Of Spec Values(1);
ps << Close Window;
dt << Clear Select << Clear Column Selection;
For Each({colref}, col_names,
colname = colref << get name;
create_failed_column_after(dt, colname);
);
dt << show window(1);
wait(0);
Betreff: Wie erhalte ich die Zeilennummer farbiger Zellen in einer Spalte und weise ihr in einer neu erstellten Spalte ein Tag (z. B. „1“) zu?@jthi Danke. Ich habe Ihr Skript für die Verwendung mit einem Datensatz angepasst, der meinem sehr ähnlich ist. Es funktioniert gut für einen Spaltennamen, aber nicht, wenn ich eine Schleife über Spaltennamen mache. Und wie platziere ich jede neu erstellte Spalte neben (rechts von) der Spalte, an der die Operation innerhalb der Schleife ausgeführt wird?
Names Default To Here( 1 );
Clear Log();
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
col_names = dt << Get Column Group( "Processes" );
ps = dt << Process Screening(
Process Variables( Eval( col_names ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
);
ps << Color Out Of Spec Values (1);
t = ps << Get Window Title; //Show( t );
ps << Close Window;
dt << Clear Select << Clear Column Selection;
get_colored_cells = Function({dt, colname}, {Default Local},
colscript = Column(dt, colname) << Get Script;
l = Substitute(Name Expr(colscript), Expr(New Column()), List());
colored_cells = {};
Try(
colors = l["Color Cells"];
If(Type(colors[1]) == "List",
jmptrickery = 1;
,
jmptrickery = 0;
);
For Each({color}, colors,
If(jmptrickery,
Insert Into(colored_cells, color[2]);
,
Insert Into(colored_cells, color);
);
);
);
return(Matrix(colored_cells));
);
measColNames = dt << get column names(Numeric,Continuous ); show (measColNames[1]);
For( i = 1, i <= N Items( measColNames), i++,
rows = J( 1, N Rows( dt ), 0 );
colored_rows = get_colored_cells( dt, measColNames[i]);
rows[colored_rows] = 1;
dt << New Column( "PassFail"||measColNames[i], Numeric, Nominal, Values( rows ) );
);
//colname = "NPN1";
///// for single column
/*rows = J(1, N Rows(dt), 0);
colored_rows = get_colored_cells(dt, colname);
rows[colored_rows] = 1;
dt << New Column("result", Numeric, Nominal, Values(rows));*/
Betreff: Wie erhalte ich die Zeilennummer farbiger Zellen in einer Spalte und weise ihr in einer neu erstellten Spalte ein Tag (z. B. „1“) zu?Dies gibt eine Vorstellung davon, wie Sie die Situation für eine Spalte handhaben können
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
a = {1, 3, 5};
b = {2, 4, 6};
c = {7, 8, 9};
:height << color cells({{"Red", a}, {"blue", b}, {"yellow", c}});
:weight << color cells({{"Red", a}});
:age << color cells({{"Red", a}, {"blue", b}});
get_colored_cells = Function({dt, colname}, {Default Local},
colscript = Column(dt, colname) << Get Script;
l = Substitute(Name Expr(colscript), Expr(New Column()), List());
colored_cells = {};
Try(
colors = l["Color Cells"];
If(Type(colors[1]) == "List",
jmptrickery = 1;
,
jmptrickery = 0;
);
For Each({color}, colors,
If(jmptrickery,
Insert Into(colored_cells, color[2]);
,
Insert Into(colored_cells, color);
);
);
);
return(Matrix(colored_cells));
);
colname = "age";
// for single column
rows = J(1, N Rows(dt), 0);
colored_rows = get_colored_cells(dt, colname);
rows[colored_rows] = 1;
dt << New Column("result", Numeric, Nominal, Values(rows));
Sie können dann zusätzliche Spalten erstellen, um jede Spalte einzufärben, wenn Sie sie durchlaufen.