Subtraktion mehrerer SpaltenHallo Team,
Benötigen Sie Hilfe bei der Entwicklung eines Skripts zum Subtrahieren mehrerer Spalten, Spaltenname und Anzahl sind variabel.
kann sich aufgrund von Analysen ändern,
Sie müssen das Spaltendelta mit Unterschieden für alle Werte aus derselben Zeile auffüllen,
Beispieldaten wie unten

AnalytikDatentabelleSkriptingRe: Subtraktion mehrerer SpaltenHi @jinsejoseph
Können Sie ein Beispiel für die Formel geben, die Sie verwenden möchten?Das klingt nach etwas, das ich mit der benutzerdefinierten Transformation in der verwenden würde Skripting-Tools Add-In für.

Re: Subtraktion mehrerer SpaltenHallo, danke für die Antwort,
Ich verwende JMP15. Können Sie mir helfen, auf den Code zu verweisen, den ich verwenden kann?
Ich bin ein Anfänger in JMP
Danke im Voraus
Re: Subtraktion mehrerer SpaltenErwartete Leistung in Delta wie unten,

Re: Subtraktion mehrerer SpaltenHi ,
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 zu verweisen, den ich verwenden kann?
Danke im Voraus
Re: Subtraktion mehrerer SpaltenHier ist die Formel, die ich verwenden würde.Es beruht auf der Matrixfunktion Loc(), die alle Nicht-Null-Einträge 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]], . );
Re: Subtraktion mehrerer SpaltenHallo Jim,
Danke für die Eingabe,
Der Spaltenname ist jedoch eine variable Kontrolle und der Name kann sich von Lauf zu Lauf ändern.
wie kann man in dieser situation codieren?
Re: Subtraktion mehrerer SpaltenAngenommen, Sie kennen die Namen und die Anzahl der Spalten nicht, der folgende Code erstellt die erforderliche Formel und erstellt dann 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
Re: 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 relevanten Spalten zu filtern
- Erfordert JMP16, da alle filtern
- 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 es auch in verwandeln Benutzerdefinierte Funktion
Re: Subtraktion mehrerer SpaltenHallo Jim,
Danke für die Hilfe,
Lösung funktioniert gut 
Re: Subtraktion mehrerer SpaltenJetzt sehe ich, dass ich in diesem Fall persönlich die benutzerdefinierte Transformationsfunktion in der Skripting-Tools hinzufügen.Ich würde alle Spalten auswählen, die Sie transformieren möchten (ich denke data1-data10) und dann Custom Transformation aus dem Cols-Menü auswählen (verfügbar nach der Installation des Add-Ins) und diese Einstellungen eingeben:
