Führen Sie Berechnungen mit ausgewählten Spalten durchHallo,
Ich habe Mühe, hierfür eine gute Skriptlösung zu finden.Ich möchte einige Spalten auswählen und dann Berechnungen darüber durchführen.Die ausgewählten Spalten sind flexibel, manchmal können es 2 sein, manchmal können es aber auch 10+ Spalten sein, um diese Berechnung durchzuführen.
Zum Beispiel
| A | B | C | Neue Spalte mit der Formel sqrt(sum(A^4, B^4, C^4) |
| 1 | 2 | 3 | ... |
| 4 | 5 | 6 | ... |
| 7 | 8 | 9 | ... |
In diesem Moment habe ich das Skript zum Extrahieren der ausgewählten Spalte. Aber sobald sie in einer Liste mit Spaltennamen sind, weiß ich nicht, wie ich die Spalte mit der Formel oben zusammenfassen soll ...
dt = Current Data Table();
cols = dt << get selected columns;
Vielen Dank für deine Hilfe!
Betreff: Berechnungen mit ausgewählten Spalten durchführenIch habe die zu verwendende Methode aufgrund der sehr guten Funktionen ausgewählt, die die Matrixoperatoren in JSL haben.Die Aussage
mat = Sqrt( Sum( mat ^ 4 ) );
ist ein Beispiel dafür, wie schön und übersichtlich die Berechnungen mit Matrizen durchgeführt werden können.
Um jedoch Matrixoperatoren verwenden zu können, müssen die Daten in einer Matrix vorliegen. Daher wird für jede Zeile zunächst die Matrix Mat als leere Matrix festgelegt
mat = [];
und dann nimmt die For()-Schleife jede der in << Get Selected Columns angegebenen Spalten und fügt den Wert für diese Spalte für die angegebene Zeile zur Matrix „Mat“ als neues Element in der Matrix hinzu.Es „verkettet“ den Wert der Spalte für die aktuelle Zeile mit der Matrix.
mat = mat || Column( cols[i] )[Row()]
Betreff: Berechnungen mit ausgewählten Spalten durchführenDanke, Jim! Ihr Skript ist wie immer sehr hilfreich.Können Sie bitte näher erläutern, was diese Codezeile bewirkt, damit ich JSL besser verstehe?
mat = mat || Column( cols[i] )[Row()]
Betreff: Berechnungen mit ausgewählten Spalten durchführenHier ist, mit JSL,
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Calc",
formula(
cols = dt << get selected columns;
mat = [];
For( i = 1, i <= N Items( cols ), i++,
mat = mat || Column( cols[i] )[Row()]
);
mat = Sqrt( Sum( mat ^ 4 ) );
)
);
dt:calc << delete formula;
Wie würde ich eine Formelspalte erstellen, um Ihr Problem zu lösen?