Come ottenere il numero di riga delle celle colorate in una colonna e assegnargli un tag (ad esempio "1") in una colonna appena creata?Ho usato Color Out of Spec Values() per colorare i fallimenti delle specifiche nei miei dati di misurazione. Ho più colonne con dati di misurazione e i valori fuori specifica per ogni colonna vengono colorati in base alle specifiche per ogni colonna di parametri.
Per ogni colonna di parametri voglio creare una colonna adiacente che assegni "1" quando la cella è colorata, altrimenti "0".
Come ottenere questo risultato tramite JSL?
Automazione e scriptingFinestreR: Come ottenere il numero di riga delle celle colorate in una colonna e assegnargli un tag (ad esempio "1") in una colonna appena creata?Wow, bella idea - tramite lo script della rubrica!
La cosa bella di JMP:
Le soluzioni alternative : )
La cosa non così interessante di JMP:
Soluzioni alternative per le soluzioni alternative.
Per ottenere direttamente i valori fuori specifica senza la deviazione tramite Colore, vota: :folded_hands: è nella specifica (valore)
R: Come ottenere il numero di riga delle celle colorate in una colonna e assegnargli un tag (ad esempio "1") in una colonna appena creata?Non usare il ciclo For e usa << sposta le colonne selezionate per spostare le tue colonne dopo la colonna specificata
Vedi altro...
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);
R: Come ottenere il numero di riga delle celle colorate in una colonna e assegnargli un tag (ad esempio "1") in una colonna appena creata?@jthi Grazie. Ho adattato il tuo script per usarlo con un set di dati che corrisponde molto al mio. Funziona bene per un nome di colonna, ma non quando faccio un ciclo sui nomi di colonna. Inoltre, come faccio a posizionare ogni colonna appena creata accanto (a destra) alla colonna su cui viene eseguita l'operazione all'interno del ciclo?
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));*/
R: Come ottenere il numero di riga delle celle colorate in una colonna e assegnargli un tag (ad esempio "1") in una colonna appena creata?Questo dà un'idea di come puoi gestire la situazione per una colonna
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));
puoi quindi creare colonne aggiuntive per colorare ogni colonna quando esegui un ciclo su di esse