CIAO,
Nuovo in JMP e ho cercato e letto un sacco di aiuto e ho girato in tondo. Penso che quello che sto facendo sia facile e diretto, ma non ho questa sensazione da JSL. Ho una tabella di dati più complicata ma allo scopo di provare a far funzionare il mio codice ho semplificato la mia tabella. Ho una tabella con 5 colonne, 4 di ciascuna hanno "_Yield" nell'intestazione. 13 righe sono costituite da 1 e 0 e quello che sto cercando di fare è creare una colonna per ogni riga che mostri la prima occorrenza di un 1 nelle colonne di rendimento. Ho bisogno che questo sia intelligente poiché i nomi delle colonne (diversi da contenere _yield) non avranno sempre gli stessi nomi o si troveranno nelle stesse posizioni. Ho capito come guardare solo le colonne dei rendimenti e l'ho convertito in una matrice dove posso quindi trovare i valori che sto cercando. Non riesco proprio a convertire questi valori nelle intestazioni di colonna. La colonna del test mostra la posizione nella matrice, la colonna dei risultati in basso mostra cosa dovrei ottenere nella colonna della Guida.Grazie in anticipo.

dt = Current Data Table();
lst = dt << Get Column Names(string);
dt << clear column selection;
For(i = 1, i <= N Items(lst), i++,
If(Contains(lst[i], "_Yield") > 0,
Column(dt, lst[i]) << set selected;
selcols = dt << get selected columns;
)
);
Mat2 = dt << Get as Matrix(selcols);
DesList = List();
For(i = 1, i <= N Rows(Mat2), i++,
Pos = Min(Loc(Mat2[i, 0]));
Insert Into(DesList, Pos);
);
dt << New Column("Test", Numeric, Continuous, <<SET values="">= 1);
If(
result >= 1, (newcolumn[j] = selcols),
Is Missing(result), (newColumn[j] = Parse("PASS"))
);
);</SET>ciao jti,
Grazie per la tua risposta. Filter Each non è una funzione attiva per me. Forse perché sto usando V15 ma sono stato in grado di usare il mio modo attuale di selezionare i nomi delle colonne con la tua equazione one_idx e funziona a meraviglia. Ho avuto problemi con la funzione Loc la scorsa settimana, quindi questo aiuta davvero.
Un esempio:
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([0, 0, 1, 0])),
New Column("A_YIELD", Numeric, "Continuous", Format("Best", 12), Set Values([0, 0, 1, 0])),
New Column("B_YIELD", Numeric, "Continuous", Format("Best", 12), Set Values([1, 0, 0, 0])),
New Column("C_YIELD", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1, 0]))
);
// Get column names which end in _YIELD
yield_cols = Filter Each({col_name}, dt << Get Column Names("Continuous", "String"),
Ends With(col_name, "_YIELD");
);
// create new column to get _YIELD column name
dt << New Column("RESULT", Character, Nominal, << Set Each Value(
one_idx = Loc(dt[Row(), yield_cols], 1);
If(N Items(one_idx),
yield_cols[Min(one_idx)];
,
"PASS"
);
));
