Auswerten einer variablen Spaltenliste als String und Einfügen in eine neue SpaltenformelIch habe eine Variable erstellt, die eine Zeichenfolge von Spaltennamen ist.Dies befindet sich in einer FOR-Schleife, sodass es sich mit jeder Schleife ändert.
Hier ist eine Beispieltabelle zur Demonstration, in Wirklichkeit besteht meine Tabelle aus etwa 400 Spalten mit seltsamen Namen.Ich versuche, Spalten zu gruppieren, die gruppiert werden sollten, und den maximalen Wert zu melden. In 99,9 % der Fälle gibt es nur 1 Wert pro Zeile für jede zu gruppierende „Gefällt mir“-Spalte.
| Spalte1 | Spalte2 | Spalte3 |
| 22 | | |
| | 22 | |
| | | 32 |
| | 32 | |
| 1 | | |
| | | 56 |
| | 34 | |
Dieser erste Teil ist eine Schleife, die eine variable Spaltenliste generiert.Ich habe nicht den ganzen Code hier, aber hier ist eine Zusammenfassung.Das funktioniert, also möchte ich die Diskussion hier nicht verzetteln.
VarCols = functional code here and the output is a string with this format: {"col1", "col2", "col3"}
Dann soll mein Code eine neue Spalte mit dem Namen „VarName“ erstellen (definiert in einem anderen Teil der Schleife) und dann eine Formel einfügen, die den maximalen Wert der Spalten in VarCols meldet.Aber ich kann es einfach nicht beurteilen.Mache ich das so falsch?
DT << New Column(VarName, Numeric, "Continuous", formula(Maximum(columns(eval(VarCols)))));
Hier ist der spezifische Fehler, obwohl ich den variablen Spaltennamen eingefügt habe, um Verwirrung zu vermeiden:
Spalten-VarName-Formel unterbrochen
Name Ungelöst: Spalten 1 Mal Bei Zeilen: 2 Operation: Spalten, Spalten (Eval( VarCols) ) /*###*/
Formelauswertungsfehler wurden ignoriert
Betreff: Variable Spaltenliste als String auswerten und in eine neue Spalte Formel einfügenBitte geben Sie den Wert von "TheExpr" an
Betreff: Variable Spaltenliste als String auswerten und in eine neue Spalte Formel einfügenLangjähriger Fan. Zum ersten Mal muss ich tatsächlich posten, um eine Frage beantwortet zu bekommen.
Das ist toll. Ich habe es gerade geschafft, an denselben Punkt in meinem Code zu gelangen. Der nächste Schritt besteht darin, diesen String in eine Funktion in einer neuen Spalte einzufügen.
dt << New Column( "MinValue", numeric, continuous, Formula( min(Eval( Parse( TheExpr)))));
aber das funktioniert bei mir nicht. Jede Hilfe wäre willkommen.
Bitte ignorieren. Das Gehirn hat heute Nacht nicht richtig funktioniert ...
Betreff: Variable Spaltenliste als String auswerten und in eine neue Spalte Formel einfügenDas hat funktioniert, danke @txnelson
Betreff: Variable Spaltenliste als String auswerten und in eine neue Spalte Formel einfügenEin anderes Community-Mitglied hat möglicherweise einen effizienteren Code, aber hier ist, wie ich Ihre Anfrage codieren würde
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
VarCols = {"NPN1", "PNP2", "NPN2"};
VarName = "NewCol";
// Create the JSL required to generate the new column
theExpr = "DT << New Column(VarName, Numeric, Continuous, formula(Maximum(:" || VarCols[1];
For( i = 2, i <= N Items( VarCols ), i++,
theExpr = theExpr || ",:" || VarCols[i]
);
theExpr = theExpr || ")));";
// Run the generated JSL
Eval( Parse( theExpr ) );