Créer une formuleBonjour à tous,
comment puis-je calculer la colonne X_9 et X_10 avec une formule?
Pour X_9:
Alors que X_1 = X_1 -> X_7 (Row1) -X_8 = X_9
X_9 - X_8
Pour X_10:
Alors que X_1 = X_1 -> X_10 (Row1) = X_9 - X_8
X_9 + X_8
Merci beaucoup pour votre aide!
Re: Créer une formuleCe genre de question a été posée à plusieurs reprises. Avez-vous d'abord cherché dans les discussions passées des informations susceptibles de vous aider à résoudre ce problème?
Il est peu probable qu'une formule utilise Tandis que() une fonction. Vous souhaitez probablement utiliser le Si() une fonction. Voir aussi le Décalage() une fonction.
Les fonctions sont documentées. S'il te plait regarde Aide> Bibliothèque de documentation JMP> Utilisation de JMP . Il y a des chapitres consacrés aux formules et aux fonctions. Voir aussi Aide> Index de script . Configurer ce navigateur pour afficher Les fonctions (menu déroulant en haut à gauche), puis recherchez Si et Décalage .
Re: Créer une formuleJe suis désolé, mais je ne peux pas interpréter votre notation sur ce qui est requis pour X_0 et X_10. Pouvez-vous l'expliquer par écrit?Re: Créer une formuleBonjour,
Merci pour votre réponse.
J'espère que vous pouvez le comprendre maintenant.
Meilleures salutations.
Tant que les lignes de la colonne X_1 ne changent pas
-> doit être calculé dans la colonne X_9 = X_7 moins X_8.
Tant que les lignes de la colonne X_1 ne changent pas
-> la colonne X_8 doit être ajoutée à la colonne X_10
Re: Créer une formuleVoici ma solution: la formule X__9 est
If( Row() == 1, sumX__8 = 0 );
If( :X__1 != Lag( :X__1 ),
sumX__8 = 0
);
sumX__8 = sumX__8 + :X__8;
:X__7 - sumX__8;
La formule X__10 est
If( Row() == 1, theSum = 0 );
If( :X__1 != Lag( :X__1 ),
theSum = 0
);
theSum = theSum + :X__8;
theSum;
Ci-joint un tableau de données avec les formules appliquées
Re: Créer une formuleBonjour,
c'est vraiment merveilleux !!
Merci beaucoup pour ça!
J'espère que je vais bientôt commencer à comprendre comment utiliser la formule
... et peut le faire moi-même.
Je vous souhaite une agréable soirée / après-midi (?).
Re: Créer une formuleBonjour, txnelson,
puis-je bien comprendre vos formules?
La formule pour X_9
si la ligne = 1 alors somme X_8 = 0
Si X_1 est pas égal (?! = décalage) à X_1 puis sumX_8 = 0
sinon sumX_8 = sumX_8 + X_8
et X_7 - sumX_8
La formule pour X_10
si Row = 1 alors theSum = 0
si X_1 le fait pas égal (?! = Lag ) X_1
theSum = 0
sinon theSum = TheSum + X_8
Remplissez la somme
Est-ce correctement interprété?
Une salutation ensoleillée et restez en bonne santé!
Re: Créer une formule


C'est faux ....
Bonjour j'essaye de faire la formule moi-même
Comment puis-je obtenir le prochain si en dessous?
Merci de votre aide.
Re: Créer une formuleVotre interprétation de X__9 est incorrecte. Permettez-moi d'essayer d'expliquer comment cela fonctionne.
3 éléments doivent être compris sur les formules dans JMP qui aideront à l'interprétation
- JMP exécute la formule pour chaque ligne du tableau de données, en commençant par la ligne 1. Et la fonction Row () retournera la ligne sur laquelle JMP est actuellement
- Vous pouvez créer autant de variables de mémoire (ie sumX__8) que vous le souhaitez dans une formule et elles conserveront leur valeur jusqu'à ce qu'elles soient modifiées dans la formule, de ligne en ligne. C'est l'une des clés de la formule. Cette variable résume les valeurs de X__8 d'une ligne à l'autre, jusqu'à ce qu'une nouvelle valeur X__1 soit observée. Lorsque cela se produit, sumX__8 est remis à 0.
- Le résultat du dernier calcul exécuté dans une formule pour une ligne donnée, est la valeur qui sera affichée pour la ligne dans le tableau de données.
L'interprétation de la formule de la colonne X__9 est donc:
Pour la ligne 1
Si Row () est égal à 1, définissez la variable de mémoire sumX__8 égale à 0. Ceci est vrai Row () est égal à 1, donc sumX__8 est initialisé à une valeur de 0. La variable mémoire sumX__8 est utilisée pour calculer la somme cumulée de X__8 dans le groupe de X__1.
Si la valeur de X__1 pour la ligne 1 n'est pas égale à la valeur précédente (décalage) de X__1, définissez la valeur de sumX__8 sur 0. Puisqu'il n'y a pas de valeur précédente de X__1, aucun calcul ne sera effectué. sumX__8 restera à sa valeur actuelle, qui est 0
La ligne suivante ( sumX__8 = sumX__8 +: X__8; ) est maintenant exécuté pour définir la somme cumulée de cette ligne. Pour ce faire, il prend la valeur actuelle de sumX__8, qui est 0 et y ajoute la valeur X__8 pour la ligne 0, qui est 0 pour le résultat de 0. Remarque: cette ligne de code n'est pas le calcul "Sinon" pour la fonction IF () précédente. Cette ligne de code est exécutée pour chaque ligne.
La ligne de code suivante (: X__7 - sumX __ *) effectue la valeur de la ligne de calcul 1 de X__7, qui est 20 et soustrait la somme cumulée de X__7 (la valeur sumX__8 est 0) et donne une valeur de 20-0 ou 20. Comme il s'agit du dernier calcul pour la ligne 1 de la formule, cette valeur est ce qui finit par être la valeur de la ligne 1 pour X__9
Rangée 2
Row () n'est pas égal à 1, donc le code de résultat de sumX__8 = 0 ne sera pas exécuté
La valeur de la ligne 2 de X__1 est 1000, ce qui est égal à la valeur précédente (Lag) de X__1, donc le code de résultat ne sera pas exécuté
sumX__8 est calculé pour cette ligne, ce qui donne la valeur actuelle de sumX__8 qui est 0, ajoutée à la valeur de la ligne 2 de X__8 qui est 0 pour un résultat de 0
La valeur des lignes pour X__9 est calculée comme la valeur de la ligne 2 de X__7, qui est 20 et soustrait la valeur actuelle de sumX__8 qui est 0 pour une valeur résultante de 20.
Ce processus se poursuit de ligne en ligne. À la ligne 9, la première valeur non 0 de X__8 apparaît, donc la valeur de sumX__8 devient 0 + 1 pour une valeur de 1. La ligne 10 en ajoute un de plus au sumX__8, etc.
La ligne significative suivante est la ligne 20. Lors de l'exécution de la formule pour cette ligne, la fonction IF () "If (: X__1! = Lag (: X__1)" est vraie. : X__1 est égal à 1001 et la valeur (latence) précédente de X__1 est 1000, donc le code résultant de sumX__8 est défini sur 0, donc la somme cumulée recommencera.
Votre interprétation est modifiée comme suit:
La formule pour X_9
si la ligne = 1 alors somme X_8 = 0
Si X_1 est différent de la valeur précédente de X_1 puis sumX_8 = 0
sumX_8 = sumX_8 + X_8
X__9 est calculé comme étant X_7 - sumX_8
La formule pour X__10 est à peu près la même que X__9, donc en utilisant votre interprétation, avec mes modifications c'est
La formule pour X_10
si Row = 1 alors theSum = 0
si X_1 le fait différent de la valeur précédente de X_1 theSum = 0
theSum = TheSum + X_8
X__10 est défini en référençant la valeur de la variable theSum
Re: Créer une formuleLes formules complexes sont assez difficiles à créer à l'aide du créateur de formule. Donc, ma règle d'or, c'est que si vous allez avoir plusieurs lignes de calcul, j'utilise l'éditeur de script dans le Créateur de formule.
Si vous double-cliquez sur la case qui contient la mention "pas de formule"

Vous verrez une zone de saisie qui vous permettra de taper une seule ligne ... ou quelques lignes

Mais si vous cliquez sur l'objet dans le coin supérieur droit de la boîte

Vous aurez l'éditeur de script affiché, où vous pourrez facilement saisir l'intégralité du script
