So finden Sie Maximal-/Minimalwerte aus Spalten mit bestimmten Schlüsselwörtern in den SpaltennamenHallo, ich versuche, Datensätze zu verarbeiten, um die Maximalwerte bestimmter Spalten zu finden (basierend auf bestimmten Schlüsselwörtern in den Spaltennamen). Die Anzahl der Spalten kann für jeden Datensatz unterschiedlich sein, aber der Spaltenname „Schlüsselwörter“ bleibt gleich. Ich versuche, ein Skript zu erstellen, das mit verschiedenen Datensätzen funktioniert. Unten sehen Sie ein einfaches Beispiel einer Datentabelle zur Veranschaulichung:
| Reihe | data1_volt_grp1 | Daten1_Volt_Grp2 | data2_volt_grp1 | data2_volt_grp2 | Daten_aktuell_A_grp1 | Daten_aktuell_A_grp2 | data2_current_A_grp1 | data2_current_A_grp2 | max_volt_grp1 | max_aktuelle_grp2 |
| A | 0,5 | 0,8 | 0,7 | 0,2 | 1.2 | 1.4 | 0,9 | 1.8 | 0,7 | 1.8 |
| B | 0,6 | 0,9 | 0,3 | 0,4 | 1 | 1.1 | 1.5 | 0,8 | 0,6 | 1.1 |
1. Sie müssen die Maximalwerte von Spalten finden, deren Spaltennamen aus Volt und Grp1 bestehen. Und diese Daten in die neue Spalte „max_volt_grp1“ eintragen.
2. Sie müssen die Maximalwerte von Spalten finden, deren Spaltennamen aus current und grp2 bestehen. Und diese Daten in die neue Spalte „max_current_grp2“ eintragen.
3. Das erwartete Ergebnis steht in den letzten beiden Spalten.
Danke.
Automatisierung und SkriptingBetreff: So finden Sie Maximal-/Minimalwerte aus Spalten mit bestimmten Schlüsselwörtern in den SpaltennamenSo würde ich vorgehen, um die Spalte Max_volt_grp zu erstellen

Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( string );
valueMatrix = [];
//col = "data1_volt_grp1"
For Each( {col}, colNames,
If( Contains( col, "volt" ) & Contains( col, "grp1" ),
valueMatrix = valueMatrix |/ Matrix( Column( col ) << get values )
)
);
If( Length( valueMatrix ) > 0,
dt << New Column( "Max_volt_grp1" );
:Max_volt_grp1[1] = Max( valueMatrix );
);Betreff: So finden Sie Max-/Min-Werte aus Spalten mit bestimmten Schlüsselwörtern in den SpaltennamenHallo Jim,
Die Lösung ermittelt den Maximalwert dieser Spalten für die gesamte Zeilenanzahl. Ich suche nach einem Skript, mit dem der Maximalwert für jede Zeile separat ausgefüllt wird (die Zeilenanzahl variiert je nach Datensatz). Ich erwarte die Ausgabe für jede Zeile wie in der hervorgehobenen Spalte. Vielen Dank für Ihre Hilfe.

Betreff: So finden Sie Max-/Min-Werte aus Spalten mit bestimmten Schlüsselwörtern in den SpaltennamenMein Fehler, versuche diese Methode. Ich mag diese Eval(Parse())-Methode nicht, aber es war die einzige Möglichkeit, sie zum Laufen zu bringen.
Der Code erstellt eine Zeichenfolge, die das zum Erstellen der neuen Spalte erforderliche JSL enthält, und führt dann das JSL aus
Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( string );
// Build a list of the columns to be evaluated
theCols = "";
For Each( {col}, colNames,
If( Contains( col, "volt" ) & Contains( col, "grp1" ),
theCols = theCols || ", :" || col
)
);
// Create the new column and formula command, adding in the list of
// columns ceated in the above loop and then executing it
Eval(
Parse(
"dt << new column(\!"max_volt_grp1\!",formula(Max(" ||
Substr( theCols, 2 ) || ")));"
)
);Betreff: So finden Sie Max-/Min-Werte aus Spalten mit bestimmten Schlüsselwörtern in den SpaltennamenDanke, Jim. Das Skript funktioniert wie erwartet.