Script à faire : Soustraction de plusieurs colonnesSalut l'équipe,
Besoin d'aide pour développer un script pour effectuer la soustraction de plusieurs colonnes, le nom et le nombre de colonnes sont variables,
peut changer en fonction de l'analyse,
Besoin de remplir le delta de la colonne avec les différences de toutes les valeurs de la même ligne,
exemples de données comme ci-dessous

production attendue:

Modélisation statistique avancéeAutomatisation et scriptsRe : Soustraction de plusieurs colonnesSalut Jim,
Merci pour l'aide,
la solution fonctionne bien 
Re : Soustraction de plusieurs colonnesVous pouvez également le transformer en fonction si vous devez l'utiliser plusieurs fois.
Voici un exemple :
- Fonction
- Utilise l'expression régulière pour filtrer les colonnes d'intérêt
- Nécessite JMP16 en raison du filtre chacun
- Utilise Loc() et les calculs matriciels
- Crée un nouveau delta de colonne avec les valeurs
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})$");
Pourrait aussi le transformer en Fonction personnalisée
Re : Soustraction de plusieurs colonnesEn supposant que vous ne connaissez pas les noms et que vous ne connaissez pas le nombre de colonnes, le code ci-dessous créera la formule requise, puis créera la nouvelle colonne avec la formule générée.
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>

L'exemple de tableau de données que j'ai utilisé est joint
Re : Soustraction de plusieurs colonnesSalut Jim,
Merci pour la contribution,
Mais le nom de la colonne est un contrôle variable et le nom peut changer en fonction de l'exécution,
comment coder dans cette situation ?
Re : Soustraction de plusieurs colonnesVoici la formule que j'utiliserais.Il s'appuie sur la fonction matricielle Loc() qui renvoie toutes les entrées non nulles dans une matrice.
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 : Soustraction de plusieurs colonnesSalut ,
J'écrivais un script pour l'analyse des données, et j'en ai besoin pour implémenter cette logique entre le code uniquement pour une table de données,
pouvez-vous m'aider à indiquer le code que je peux utiliser
Merci d'avance
Re : Soustraction de plusieurs colonnesMaintenant je vois, dans ce cas, j'utiliserais personnellement la fonction de transformation personnalisée dans le Outils de script ajouter à.Je sélectionnerais toutes les colonnes que vous souhaitez transformer (je pense data1-data10), puis sélectionnerais Transformation personnalisée dans le menu Cols (disponible après l'installation du complément) et saisirais ces paramètres :

Re : Soustraction de plusieurs colonnesSortie attendue en delta comme ci-dessous,

Re : Soustraction de plusieurs colonnesSalut, merci pour la réponse,
J'utilise JMP15, pouvez-vous m'aider à pointer vers le code que je peux utiliser,
Je suis débutant dans JMP
Merci d'avance
Re : Soustraction de plusieurs colonnesSalut @jinsejoseph
Pouvez-vous donner un exemple de la formule que vous souhaitez utiliser ?Cela ressemble à quelque chose que j'utiliserais la transformation personnalisée dans le Outils de script complément pour.
