Je veux ajouter une formule pour soustraire la 1ère et la 4ème ligne, puis la 2ème et la 5ème ligne.. puis la 3ème et la 6ème ligne et ainsi de suite..urgent, aidez-moi !Salut,
:RESULT est la colonne dans laquelle je souhaite soustraire la ligne 1 et la ligne 4, puis la ligne 2 et la ligne 5 et ainsi de suite jusqu'à ce que toutes les lignes soient terminées.
:TEST est actuellement une colonne vide dans laquelle je souhaite stocker les résultats de la colonne :RESULT
J'ai essayé le script suivant dans la formule mais ça ne marche pas ? Pas certain de pourquoi?
:RESULT << Data Type( Numeric );
:TEST << Data Type( Numeric );
For( i = 1, i <= N Rows(), i++,
Abs( :RESULT[i] - :RESULT[i + 3] )
);
Partager et communiquer les résultatsRe : Je veux ajouter une formule pour soustraire la 1ère et la 4ème rangée, puis la 2ème et la 5ème rangée... puis la 3ème et la 6ème rangée et ainsi de suite... urgent, aidez-moi !En plus d'utiliser Lag pour calculer, il existe également une fonction de ligne spécifique pour cela : Dif ( Référence de syntaxe JSL > Fonctions JSL > Fonctions de ligne - Dif(col, n) ). Parfois, cela peut mieux fonctionner que d'utiliser Lag.
Re : Je veux ajouter une formule pour soustraire la 1ère et la 4ème rangée, puis la 2ème et la 5ème rangée... puis la 3ème et la 6ème rangée et ainsi de suite... urgent, aidez-moi !De plus, pour calculer avec différentes lignes, je recommande la fonction lag, qui renvoie la valeur d'une ligne par rapport à la ligne actuelle, et vous n'avez pas besoin de boucle.

Re : Je veux ajouter une formule pour soustraire la 1ère et la 4ème rangée, puis la 2ème et la 5ème rangée... puis la 3ème et la 6ème rangée et ainsi de suite... urgent, aidez-moi !Votre formule ne doit pas contenir de boucle For(), sauf si vous l'exécutez non pas en tant que formule JMP, mais plutôt en JSL en code ouvert.Si vous spécifiez le code comme étant une formule pour la colonne, JMP parcourt automatiquement chaque ligne de données et applique la formule.Ainsi, la boucle For() n'est pas nécessaire. Vous trouverez ci-dessous un petit script qui crée une nouvelle colonne puis ajoute une formule pour la colonne.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "The New Column",
formula( If( :ATT1 == 0, 0, Abs( :RESULT - :RESULT[Row() + 3] ) ) )
);
Si vous avez une colonne vide (par exemple, appelée "mytest"), vous pouvez utiliser une fonction For Each Row() pour parcourir la table de données et calculer les valeurs.
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
If( :ATT1 == 0,
:mytest = 0,
:mytest = Abs( :RESULT - :RESULT[Row() + 3] )
)
);
Enfin, comme vous l'avez indiqué, vous pouvez utiliser une boucle For() pour parcourir la table de données.Ce code nécessite que l'on spécifie la ligne spécifique sur laquelle opérer
Names Default To Here( 1 );
dt = Current Data Table();
For( i=1, i<=N Rows(dt), i++,
If( :ATT1[i] == 0,
:mytest[i] = 0,
:mytest[i] = Abs( :RESULT[i] - :RESULT[i + 3] )
)
);
Re : Je veux ajouter une formule pour soustraire la 1ère et la 4ème rangée, puis la 2ème et la 5ème rangée... puis la 3ème et la 6ème rangée et ainsi de suite... urgent, aidez-moi !Deviner:
J'ai dû mettre à jour la ligne :
Abs( :RESULT[i] - :RESULT[i + 3] )
à
:TEST[i]=Abs( :RESULT[i] - :RESULT[i + 3] )