Zu erledigendes Skript: Subtraktion mehrerer SpaltenHallo Team,
Benötigen Sie Hilfe bei der Entwicklung eines Skripts zur Subtraktion mehrerer Spalten, Spaltenname und Anzahl sind variabel,
kann sich aufgrund der Analyse ändern,
Die Delta-Spalte muss mit den Differenzen aller Werte aus derselben Zeile gefüllt werden.
Beispieldaten wie unten

erwartete Ausgabe:

Erweiterte statistische ModellierungAutomatisierung und SkripterstellungBetreff: Subtraktion mehrerer SpaltenHallo Jim,
Danke für die Hilfe,
Lösung funktioniert gut 
Betreff: Subtraktion mehrerer SpaltenSie können es auch in eine Funktion umwandeln, wenn Sie es mehrmals verwenden müssen.
Hier ist ein Beispiel:
- Funktion
- Verwendet Regex, um nach den gewünschten Spalten zu filtern
- Erfordert JMP16 aufgrund von Filter Each
- Verwendet Loc() und Matrixberechnungen
- Erstellt ein neues Spaltendelta mit den Werten
Names Default To Here(1);
//example datatable
dt = New Table("Untitled",
Add Rows(5),
Compress File When Saved(1),
New Column("Column 1",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 0, 0, 1, 0]),
Set Display Width(55)
),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([0, 2, 3, 0, 0])),
New Column("Column 3",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([0, 3, 0, 0, 0]),
Set Display Width(87)
),
New Column("Column 4", Numeric, "Continuous", Format("Best", 12), Set Values([3, 0, 4, 0, 0])),
New Column("col", Character, "Nominal", Set Values({"a", "a", "a", "a", "a"}))
);
difference_between_min_max = Function({dt_ref, col_prefix_regex},
{Default Local},
//get columnn names of interest based on col_prefix
col_names_all = dt_ref << Get Column Names("Numeric", "String");
col_names_of_interest = Filter Each({val}, col_names_all,
!IsMissing(Regex(val, col_prefix_regex));
);
show(col_names_of_interest);
//all values for columns of interest, transpose for calculations
m = Transpose(dt_ref[0, col_names_of_interest]);
//replace 0 with missing to avoid calculation with those
m[Loc(m, 0)] = .;
//Get max and min values and deduct them
result = V Max(m) - V Min(m);
//Replace missing values with 0 for final results
result[Loc(result,.)] = 0;
//we could return result matrix here OR we can create new column with the function
dt_ref << New Column("delta", Numeric, Continuos, Set Values(result));
);
//example table in this example
difference_between_min_max(dt, "(Column )");
//example table by txnelson
//difference_between_min_max(Current Data Table(), "^(\D{1})$");
Könnte auch daraus werden Benutzerdefinierte Funktion
Betreff: Subtraktion mehrerer SpaltenVorausgesetzt, Sie kennen die Namen und die Anzahl der Spalten nicht, erstellt der folgende Code die erforderliche Formel und anschließend die neue Spalte mit der generierten Formel
Names Default To Here( 1 );
dt = Current Data Table();
// Get the columns
colNames = dt << get column names( string, continuous );
// Build the formula
theExpr = "dt<<NEW column=""></NEW>

Die von mir verwendete Beispieldatentabelle ist beigefügt
Betreff: Subtraktion mehrerer SpaltenHallo Jim,
Danke für die Eingabe,
Der Spaltenname ist jedoch eine variable Steuerung und der Name kann sich je nach Ausführung ändern.
Wie programmiert man in dieser Situation?
Betreff: Subtraktion mehrerer SpaltenHier ist die Formel, die ich verwenden würde.Es basiert auf der Matrixfunktion Loc(), die alle Einträge ungleich Null in einer Matrix zurückgibt.
x = :data[Row()] || :data1[Row()] ||
:data2[Row()] || :data3[Row()] ||
:data4[Row()] || :data5[Row()] ||
:data6[Row()] || :data7[Row()] ||
:data8[Row()] || :data9[Row()];
y = Loc( x );
Try( x[y[2]] - x[y[1]], . );
Betreff: Subtraktion mehrerer SpaltenHallo ,
Ich habe ein Skript für die Datenanalyse geschrieben und muss diese Logik zwischen dem Code nur für eine Datentabelle implementieren.
Können Sie mir helfen, auf den Code hinzuweisen, den ich verwenden kann?
Dank im Voraus
Betreff: Subtraktion mehrerer SpaltenJetzt verstehe ich, dass ich in diesem Fall persönlich die benutzerdefinierte Transformationsfunktion im verwenden würde Skript-Tools Add-in.Ich würde alle Spalten auswählen, die Sie transformieren möchten (ich glaube data1-data10), und dann im Menü „Spalten“ die Option „Benutzerdefinierte Transformation“ auswählen (verfügbar nach der Installation des Add-Ins) und diese Einstellungen eingeben:

Betreff: Subtraktion mehrerer SpaltenErwartete Ausgabe in Delta wie unten:

Betreff: Subtraktion mehrerer SpaltenHallo, Danke für die Antwort,
Ich verwende JMP15. Können Sie mir helfen, auf den Code hinzuweisen, den ich verwenden kann?
Ich bin ein Anfänger in JMP
Dank im Voraus
Betreff: Subtraktion mehrerer SpaltenHallo @jinsejoseph
Können Sie ein Beispiel für die Formel geben, die Sie verwenden möchten?Das klingt nach etwas, in dem ich die benutzerdefinierte Transformation verwenden würde Skript-Tools Add-in für.
