Wie erhalte ich Elemente aus einer Liste, um einen Wert aus einer anderen Liste auszugeben?Hallo,
Ich bin neu bei JMP und habe jede Menge Hilfe gesucht und gelesen und mich im Kreis gedreht. Ich denke, dass das, was ich mache, einfach und geradlinig ist, aber JSL vermittelt mir dieses Gefühl nicht. Ich habe eine kompliziertere Datentabelle, aber um meinen Code zum Laufen zu bringen, habe ich meine Tabelle vereinfacht. Ich habe eine Tabelle mit 5 Spalten, 4 davon haben „_Yield“ in der Überschrift. 13 Zeilen bestehen aus Einsen und Nullen und ich versuche, für jede Zeile eine Spalte zu erstellen, die das erste Vorkommen einer 1 in den Ertragsspalten anzeigt. Dies muss sinnvoll sein, da die Spaltennamen (außer „contain _yield“) nicht immer dieselben Namen haben oder sich an denselben Stellen befinden. Ich habe herausgefunden, wie ich mir einfach die Ertragsspalten ansehen und diese in eine Matrix umwandeln kann, in der ich dann die gesuchten Werte finden kann. Ich kann diese Werte einfach nicht in die Spaltenüberschriften umwandeln. Die Testspalte zeigt die Position in der Matrix, die Ergebnisspalte unten zeigt, was ich in der Hilfespalte erhalten sollte.Vielen Dank im Voraus.

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>MassenanpassungBetreff: Wie bekomme ich Elemente aus einer Liste, um einen Wert aus einer anderen Liste auszugeben?Hallo jthi,
Danke für deine Antwort. Filter Each ist für mich keine aktive Funktion. Vielleicht, weil ich V15 verwende, aber ich konnte meine aktuelle Methode zur Auswahl von Spaltennamen mit Ihrer one_idx-Gleichung verwenden und es funktioniert hervorragend. Ich hatte letzte Woche Probleme mit der Loc-Funktion, das hilft also wirklich.
Betreff: Wie bekomme ich Elemente aus einer Liste, um einen Wert aus einer anderen Liste auszugeben?Ein Beispiel:
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"
);
));
