Auswertung einer variablen Spaltenliste als Zeichenfolge und Einfügen in eine neue SpaltenformelIch habe eine Variable erstellt, die eine Zeichenfolge aus Spaltennamen ist.Dies befindet sich innerhalb einer FOR-Schleife und ändert sich daher mit jeder Schleife.
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 sollen, und den Maximalwert anzugeben. In 99,9 % der Fälle gibt es nur einen Wert pro Zeile für jede „Gefällt mir“-Spalte, die gruppiert werden soll.
| Spalte1 | Spalte2 | Spalte3 |
| 22 | | |
| | 22 | |
| | | 32 |
| | 32 | |
| 1 | | |
| | | 56 |
| | 34 | |
Dieser erste Teil ist eine Schleife, die eine variable Spaltenliste generiert.Ich habe hier nicht den gesamten Code, aber hier ist eine Zusammenfassung.Das funktioniert, deshalb 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 Maximalwert aller Spalten in VarCols angibt.Aber ich schaffe es einfach nicht, es auszuwerten.Mache ich das falsch?
DT << New Column(VarName, Numeric, "Continuous", formula(Maximum(columns(eval(VarCols)))));
Hier ist der spezifische Fehler, obwohl ich den Variablenspaltennamen eingefügt habe, um Verwirrung zu vermeiden:
Spalte VarName-Formel unterbrochen
Name Ungelöst: Spalten 1 Mal Bei Zeilen: 2 Operation: Spalten, Spalten( Eval( VarCols) ) /*###*/
Fehler bei der Formelauswertung wurden ignoriert
Betreff: Auswertung einer variablen Spaltenliste als Zeichenfolge und Einfügen in eine neue SpaltenformelBitte geben Sie den Wert von „TheExpr“ an.
Betreff: Auswertung einer variablen Spaltenliste als Zeichenfolge und Einfügen in eine neue SpaltenformelLangjähriger Fan. Zum ersten Mal muss ich tatsächlich etwas posten, um eine Antwort auf eine Frage zu bekommen.
Das ist toll. Ich habe es gerade geschafft, in meinem Code an denselben Punkt zu gelangen. Der nächste Schritt besteht darin, diese Zeichenfolge in einer neuen Spalte in eine Funktion einzufügen.
dt << New Column( "MinValue", numeric, continuous, Formula( min(Eval( Parse( TheExpr)))));
aber das funktioniert bei mir nicht. Jede Hilfe wäre dankbar.
Bitte ignorieren. Das Gehirn hat heute Nacht nicht richtig funktioniert ...
Betreff: Auswertung einer variablen Spaltenliste als Zeichenfolge und Einfügen in eine neue SpaltenformelDas hat funktioniert, danke @txnelson
Betreff: Auswertung einer variablen Spaltenliste als Zeichenfolge und Einfügen in eine neue SpaltenformelEin anderes Community-Mitglied verfügt möglicherweise über einen effizienteren Code, aber ich würde Ihre Anfrage folgendermaßen codieren
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 ) );