Salut,
Nouveau sur JMP et j'ai cherché et lu beaucoup d'aide et j'ai tourné en rond. Je pense que ce que je fais est simple et direct, mais je n'obtiens pas ce sentiment de JSL. J'ai une table de données plus compliquée, mais dans le but d'essayer de faire fonctionner mon code, j'ai simplifié ma table. J'ai une table avec 5 colonnes, 4 de chacune ont "_Yield" dans l'en-tête. 13 lignes se composent de 1 et de 0 et ce que j'essaie de faire est de créer une colonne pour chaque ligne qui affiche la première occurrence d'un 1 dans les colonnes de rendement. J'ai besoin que cela soit intelligent car les noms de colonne (autres que ceux contenant _yield) n'auront pas toujours les mêmes noms ou ne se trouveront pas toujours aux mêmes emplacements. J'ai compris comment regarder simplement les colonnes de rendement et l'ai converti en une matrice où je peux ensuite trouver les valeurs que je recherche. Je ne peux tout simplement pas convertir ces valeurs dans les en-têtes de colonne. La colonne de test montre la position dans la matrice, la colonne de résultat ci-dessous montre ce que je devrais obtenir dans la colonne Aide.Merci d'avance.

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>Salut jti,
Merci pour votre réponse. Filter Each n'est pas une fonction active pour moi. Peut-être parce que j'utilise V15 mais j'ai pu utiliser ma méthode actuelle de sélection des noms de colonne avec votre équation one_idx et cela fonctionne à merveille. J'avais eu du mal avec la fonction Loc la semaine dernière, donc cela aide vraiment.
Un exemple:
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"
);
));
