Subtrahieren Sie zwischen mehreren Spalten
dt = current data table();
For ( i=0 , i<8, i++,
dt << new column( "RESULT",
Numeric,
"Continuous",
For (x=1, x<50, x++,
Formula(Column(3+i)[x]-Column(2+i)[x]),
));
);
Ich möchte Daten zwischen mehreren Spalten subtrahieren. Ich habe das obige Skript ausprobiert, aber es funktioniert nicht. Gibt es einen effektiveren Weg, dies zu tun?
Erwartetes Ergebnis:
Ergebnis = Daten2 - Daten1
Ergebnis1 = Daten4 - Daten3
Ergebnis2 = Daten6 - Daten5
| Artikel | Daten1 | Daten2 | Daten3 | Daten4 | Daten5 | Daten6 | Daten7 | Daten8 | Daten9 | Daten10 | Daten11 | Daten12 | Daten13 | Daten14 | Daten 15 | Daten16 |
| A1 | 0,51 | 0,53 | 0,48 | 0,53 | 0,49 | 0,60 | 0,56 | 0,69 | 0,62 | 0,77 | 0,55 | 0,82 | 0,58 | 0,85 | 0,61 | 0,88 |
| A2 | 0,49 | 0,51 | 0,48 | 0,53 | 0,48 | 0,60 | 0,57 | 0,70 | 0,61 | 0,78 | 0,56 | 0,83 | 0,59 | 0,86 | 0,64 | 0,90 |
| A3 | 0,50 | 0,52 | 0,46 | 0,52 | 0,49 | 0,60 | 0,56 | 0,69 | 0,62 | 0,77 | 0,54 | 0,81 | 0,58 | 0,84 | 0,62 | 0,88 |
| A4 | 0,47 | 0,50 | 0,48 | 0,53 | 0,48 | 0,60 | 0,57 | 0,70 | 0,63 | 0,78 | 0,56 | 0,83 | 0,60 | 0,86 | 0,63 | 0,89 |
| A5 | 0,49 | 0,50 | 0,51 | 0,52 | 0,59 | 0,60 | 0,68 | 0,70 | 0,74 | 0,78 | 0,80 | 0,84 | 0,82 | 0,87 | 0,85 | 0,90 |
| A6 | 0,47 | 0,50 | 0,49 | 0,54 | 0,48 | 0,61 | 0,55 | 0,70 | 0,62 | 0,78 | 0,59 | 0,85 | 0,64 | 0,89 | 0,69 | 0,94 |
| A7 | 0,48 | 0,51 | 0,48 | 0,53 | 0,48 | 0,60 | 0,58 | 0,71 | 0,65 | 0,80 | 0,60 | 0,85 | 0,63 | 0,88 | 0,65 | 0,90 |
| A8 | 0,51 | 0,53 | 0,48 | 0,53 | 0,49 | 0,60 | 0,56 | 0,69 | 0,62 | 0,78 | 0,54 | 0,82 | 0,58 | 0,85 | 0,63 | 0,89 |
| A9 | 0,50 | 0,52 | 0,48 | 0,53 | 0,48 | 0,59 | 0,49 | 0,69 | 0,61 | 0,77 | 0,55 | 0,82 | 0,60 | 0,86 | 0,63 | 0,89 |
| A10 | 0,51 | 0,53 | 0,49 | 0,54 | 0,49 | 0,60 | 0,54 | 0,69 | 0,61 | 0,77 | 0,54 | 0,82 | 0,57 | 0,85 | 0,62 | 0,89 |
| A11 | 0,52 | 0,53 | 0,52 | 0,53 | 0,59 | 0,60 | 0,68 | 0,70 | 0,74 | 0,78 | 0,79 | 0,83 | 0,81 | 0,86 | 0,84 | 0,90 |
| A12 | 0,51 | 0,52 | 0,53 | 0,54 | 0,61 | 0,62 | 0,68 | 0,70 | 0,76 | 0,79 | 0,80 | 0,84 | 0,83 | 0,88 | 0,86 | 0,92 |
| A13 | 0,48 | 0,51 | 0,48 | 0,53 | 0,48 | 0,60 | 0,57 | 0,70 | 0,64 | 0,79 | 0,56 | 0,83 | 0,59 | 0,86 | 0,64 | 0,90 |
| A14 | 0,47 | 0,50 | 0,47 | 0,53 | 0,49 | 0,60 | 0,57 | 0,70 | 0,63 | 0,78 | 0,56 | 0,83 | 0,59 | 0,86 | 0,63 | 0,90 |
| A15 | 0,47 | 0,50 | 0,47 | 0,52 | 0,47 | 0,59 | 0,56 | 0,69 | 0,63 | 0,78 | 0,56 | 0,83 | 0,59 | 0,86 | 0,64 | 0,90 |
| A16 | 0,51 | 0,53 | 0,48 | 0,53 | 0,48 | 0,60 | 0,57 | 0,70 | 0,62 | 0,77 | 0,54 | 0,82 | 0,58 | 0,85 | 0,62 | 0,89 |
| A17 | 0,48 | 0,51 | 0,46 | 0,51 | 0,47 | 0,59 | 0,56 | 0,69 | 0,62 | 0,77 | 0,55 | 0,82 | 0,60 | 0,86 | 0,63 | 0,89 |
| A18 | 0,48 | 0,51 | 0,47 | 0,52 | 0,48 | 0,60 | 0,56 | 0,70 | 0,61 | 0,77 | 0,56 | 0,83 | 0,61 | 0,87 | 0,64 | 0,90 |
| A19 | 0,52 | 0,54 | 0,49 | 0,54 | 0,49 | 0,60 | 0,57 | 0,70 | 0,63 | 0,78 | 0,56 | 0,83 | 0,60 | 0,86 | 0,64 | 0,90 |
| A20 | 0,51 | 0,52 | 0,52 | 0,53 | 0,58 | 0,60 | 0,67 | 0,70 | 0,75 | 0,79 | 0,80 | 0,84 | 0,83 | 0,88 | 0,86 | 0,91 |
| A21 | 0,53 | 0,53 | 0,53 | 0,54 | 0,60 | 0,61 | 0,69 | 0,71 | 0,75 | 0,79 | 0,80 | 0,84 | 0,82 | 0,87 | 0,85 | 0,90 |
| A22 | 0,53 | 0,53 | 0,53 | 0,54 | 0,60 | 0,61 | 0,68 | 0,70 | 0,75 | 0,79 | 0,80 | 0,84 | 0,82 | 0,87 | 0,85 | 0,91 |
| A23 | 0,48 | 0,51 | 0,48 | 0,53 | 0,50 | 0,61 | 0,56 | 0,69 | 0,62 | 0,77 | 0,53 | 0,82 | 0,59 | 0,86 | 0,62 | 0,89 |
| A24 | 0,48 | 0,51 | 0,47 | 0,53 | 0,48 | 0,60 | 0,59 | 0,72 | 0,65 | 0,80 | 0,60 | 0,85 | 0,63 | 0,88 | 0,64 | 0,90 |
| A25 | 0,48 | 0,51 | 0,47 | 0,52 | 0,48 | 0,60 | 0,57 | 0,70 | 0,62 | 0,77 | 0,54 | 0,82 | 0,59 | 0,86 | 0,62 | 0,89 |
| A26 | 0,49 | 0,51 | 0,47 | 0,52 | 0,49 | 0,60 | 0,57 | 0,70 | 0,64 | 0,79 | 0,57 | 0,84 | 0,59 | 0,86 | 0,64 | 0,90 |
| A27 | 0,51 | 0,52 | 0,52 | 0,53 | 0,59 | 0,60 | 0,68 | 0,70 | 0,74 | 0,78 | 0,79 | 0,83 | 0,82 | 0,86 | 0,85 | 0,89 |
| A28 | 0,51 | 0,52 | 0,52 | 0,53 | 0,59 | 0,60 | 0,68 | 0,70 | 0,74 | 0,78 | 0,79 | 0,83 | 0,81 | 0,86 | 0,85 | 0,90 |
| A29 | 0,52 | 0,54 | 0,49 | 0,54 | 0,51 | 0,61 | 0,58 | 0,71 | 0,65 | 0,80 | 0,58 | 0,84 | 0,63 | 0,88 | 0,68 | 0,93 |
| A30 | 0,48 | 0,51 | 0,47 | 0,52 | 0,39 | 0,59 | 0,57 | 0,70 | 0,64 | 0,79 | 0,58 | 0,84 | 0,60 | 0,86 | 0,63 | 0,89 |
| A31 | 0,49 | 0,52 | 0,46 | 0,52 | 0,48 | 0,60 | 0,57 | 0,70 | 0,63 | 0,78 | 0,57 | 0,83 | 0,61 | 0,87 | 0,64 | 0,90 |
| A32 | 0,51 | 0,53 | 0,48 | 0,53 | 0,50 | 0,61 | 0,57 | 0,70 | 0,63 | 0,78 | 0,56 | 0,83 | 0,60 | 0,86 | 0,63 | 0,89 |
| A33 | 0,50 | 0,52 | 0,48 | 0,53 | 0,50 | 0,61 | 0,57 | 0,70 | 0,63 | 0,78 | 0,56 | 0,83 | 0,60 | 0,87 | 0,65 | 0,91 |
| A34 | 0,48 | 0,51 | 0,48 | 0,53 | 0,49 | 0,60 | 0,58 | 0,71 | 0,64 | 0,79 | 0,56 | 0,84 | 0,59 | 0,86 | 0,62 | 0,89 |
| A35 | 0,47 | 0,50 | 0,47 | 0,52 | 0,47 | 0,59 | 0,55 | 0,69 | 0,61 | 0,77 | 0,55 | 0,82 | 0,60 | 0,86 | 0,65 | 0,90 |
| A36 | 0,49 | 0,52 | 0,47 | 0,53 | 0,48 | 0,59 | 0,56 | 0,69 | 0,61 | 0,77 | 0,55 | 0,82 | 0,60 | 0,86 | 0,63 | 0,89 |
| A37 | 0,48 | 0,51 | 0,48 | 0,53 | 0,48 | 0,60 | 0,58 | 0,71 | 0,64 | 0,79 | 0,57 | 0,84 | 0,61 | 0,87 | 0,65 | 0,91 |
| A38 | 0,50 | 0,52 | 0,48 | 0,53 | 0,48 | 0,60 | 0,57 | 0,70 | 0,63 | 0,78 | 0,59 | 0,85 | 0,61 | 0,88 | 0,65 | 0,91 |
| A39 | 0,53 | 0,53 | 0,52 | 0,53 | 0,59 | 0,60 | 0,68 | 0,70 | 0,74 | 0,78 | 0,79 | 0,83 | 0,83 | 0,87 | 0,85 | 0,90 |
| A40 | 0,53 | 0,53 | 0,53 | 0,54 | 0,60 | 0,61 | 0,68 | 0,70 | 0,75 | 0,79 | 0,80 | 0,84 | 0,83 | 0,87 | 0,85 | 0,91 |
| A41 | 0,51 | 0,53 | 0,48 | 0,53 | 0,49 | 0,60 | 0,54 | 0,69 | 0,61 | 0,77 | 0,55 | 0,82 | 0,60 | 0,86 | 0,64 | 0,90 |
| A42 | 0,59 | 0,50 | 0,47 | 0,52 | 0,49 | 0,60 | 0,57 | 0,70 | 0,64 | 0,79 | 0,56 | 0,83 | 0,61 | 0,87 | 0,64 | 0,90 |
| A43 | 0,51 | 0,52 | 0,52 | 0,53 | 0,59 | 0,60 | 0,68 | 0,70 | 0,74 | 0,78 | 0,79 | 0,83 | 0,82 | 0,86 | 0,85 | 0,90 |
| A44 | 0,51 | 0,52 | 0,52 | 0,53 | 0,59 | 0,60 | 0,68 | 0,70 | 0,74 | 0,78 | 0,79 | 0,83 | 0,81 | 0,85 | 0,84 | 0,89 |
| A45 | 0,51 | 0,52 | 0,53 | 0,54 | 0,59 | 0,60 | 0,69 | 0,71 | 0,76 | 0,80 | 0,81 | 0,85 | 0,83 | 0,88 | 0,86 | 0,92 |
| A46 | 0,49 | 0,51 | 0,48 | 0,53 | 0,48 | 0,60 | 0,57 | 0,70 | 0,62 | 0,78 | 0,56 | 0,83 | 0,61 | 0,87 | 0,66 | 0,91 |
| A47 | 0,49 | 0,52 | 0,48 | 0,53 | 0,47 | 0,59 | 0,54 | 0,69 | 0,61 | 0,76 | 0,52 | 0,81 | 0,56 | 0,84 | 0,61 | 0,88 |
| A48 | 0,47 | 0,50 | 0,47 | 0,52 | 0,47 | 0,59 | 0,57 | 0,70 | 0,63 | 0,78 | 0,56 | 0,83 | 0,59 | 0,86 | 0,63 | 0,90 |
| A49 | 0,50 | 0,51 | 0,52 | 0,53 | 0,59 | 0,60 | 0,68 | 0,70 | 0,74 | 0,78 | 0,79 | 0,83 | 0,82 | 0,87 | 0,85 | 0,90 |
Automatisierung und SkripterstellungGrundlegende Datenanalyse und ModellierungBetreff: Zwischen mehreren Spalten subtrahierenHallo @kuanaunwei ,
Für mich ist die Verwendung von „Workflow“ (ich verwende JMP 17) der effektivste Weg, das richtige Skript zu erlernen.
Unten erfahren Sie, wie ich es machen würde.
Um das Ergebnis manuell abzurufen, verwende ich einen Tastenklick. Anschließend überprüfe ich den Code unter „Workflow“. Füge es in mein Skript ein

Aufgrund Ihres JSL-Skripts oben bin ich mir nicht sicher, ob Sie nur eine einfache Formelspalte oder eine Formelspalte mit Bedingungen (IF/Else) haben möchten.
Betreff: Subtrahieren zwischen mehreren SpaltenDies könnte einige zusätzliche Ideen geben
Names Default To Here(1);
dt = Open("$DOWNLOADS/724991.jmp");
cont_cols = dt << Get Column Names(Continuous, "String");
first_cols = cont_cols[2::N Items(cont_cols)::2];
second_cols = cont_cols[1::N Items(cont_cols)::2];
If(N Items(first_cols) != N Items(second_cols),
Throw("column mismatch");
);
For Each({{col1, col2}}, Across(first_cols, second_cols),
Eval(EvalExpr(
new_col = dt << New Column("Result", Numeric, Continuous, Formula(
Expr(Name Expr(AsColumn(dt, col1))) - Expr(Name Expr(AsColumn(dt, col2)))
));
));
dt << Run Formulas;
new_col << Suppress Eval(1);
);
Wenn Ihnen nur die Ergebnisse am Herzen liegen, besteht eine andere Möglichkeit darin, Ihre Daten zu stapeln, das Ergebnis in einer gestapelten Tabelle zu berechnen, es zu teilen (möglicherweise müssen Sie eine neue Spalte hinzufügen, um die richtige Benennung der Ergebnisspalte zu gewährleisten) und es wieder zusammenzufügen



und dann ist JMP in der Lage, eine Art Skript für Sie zu erstellen

Betreff: Subtrahieren zwischen mehreren SpaltenDie Spaltennamen werden unterschiedlich sein und auch die Größe der Daten wird unterschiedlich sein. Daher ist der Workflow für meinen Fall möglicherweise nicht die beste Lösung. Danke für die Empfehlung:)
Betreff: Subtrahieren zwischen mehreren SpaltenEntschuldigen Sie die verspätete Antwort, ich konnte mich aus irgendeinem Grund nicht bei meinem JMP-Konto anmelden. Vielen Dank auch für die Idee mit der Skriptseite. Das hat geholfen