Script d'une boucle (double boucle peut-être)Bonjour,
J'ai besoin d'aide pour créer un script pour un client (voir le fichier joint).
Il veut calculer automatiquement la colonne "temps relatif" dans JMP (alors qu'ici elle est calculée hors ligne dans Excel).
Pour chaque "Numéro de lot", lorsque "Nouveau déclencheur de lot" = 1, la "Date / Heure" de la ligne correspondante est utilisée comme référence (elle est définie sur "0") et "l'heure relative" est calculée comme [Date / Heure i - Date / Heure réf].
Je ne suis pas encore vraiment "script courant", toute aide serait appréciée.
Merci.
Emmanuel
Re: Scripting a loop (double loop peut-être)Salut Emmanuel,
Le moyen le plus simple de le faire est de manière interactive, en utilisant des formules de colonne.
- Tout d'abord, modifiez la formule de colonne que vous avez déjà pour le nouvel indicateur de lot, afin de permettre la première ligne. Nous voulons que la valeur soit égale à 1 ici également. Ensuite, nous aurons 1 pour la première ligne, et toute ligne répondant aux critères "nouveau lot". (Voir l'image de la formule ci-dessous.)
- ajoutez une transformation de colonne pour la somme cumulée de la ligne "nouveau lot". Cela a pour effet de numéroter chaque lot, ce qui permet le regroupement. (voir la deuxième capture d'écran de la formule et la capture d'écran du tableau de données pour voir la numérotation)
- ajoutez une colonne de formule pour calculer la différence entre l'heure et la durée minimale de la colonne, regroupées par la ligne que vous avez ajoutée à l'étape 1 ci-dessus (voir la troisième capture d'écran de la formule et la capture d'écran du tableau de données pour voir la réinitialisation à 0 heure relative pour chaque nouveau groupe.)




Si le client insiste sur le script, voici un script, qui corrige la formule dans la colonne "nouveau déclencheur de lot" et ajoute les 2 dernières colonnes du tableau ci-dessus.
Names Default To Here( 1 );
dt = Current Data Table();
dt:New Batch Trigger << formula( If( Row() == 1 | Dif( :Temperature C in °C, 1 ) + Dif( :Temperature B in °C, 1 ) < -60, 1, 0 ) );
dt << New Column( "Batch Group", formula( Col Cumulative Sum( :New Batch Trigger ) ) );
dt << New Column( "Rel time within group", formula( :"Date/Time"n - Col Minimum( :"Date/Time"n, :batch group ) ) );
Tableau ci-joint.
Acclamations,
Brady
Re: Scripting a loop (double loop peut-être)Bonjour Brady,
Merci. Je suis encore un peu confus car il ne correspond pas à leur propre colonne "Temps relatif". Je pense que le problème vient du fait que leur ligne de référence est au «milieu» du lot et qu'il y a donc un «temps relatif» négatif.
Emmanuel
Re: Scripting a loop (double loop peut-être)J'ai finalement utilisé une formule de colonne avec indice et fonction de ligne (je n'étais pas au courant au moment où j'ai posté la demande).
