JSL : modifier les valeurs d'une plage de lignes en fonction des chaînes correspondantes dans une 2e colonne ?Notre logiciel de collecte de données démarre un peu plus tôt que nos tests. Nous aimerions donc éliminer ce décalage dans les données JMP de la manière suivante :
1. L'utilisateur entre la date et l'heure du début de chaque expérience (il peut s'agir de multiples qui commencent à des moments différents dans le même tableau de données). Cette partie, j'ai scripté avec une zone de liste.
2. Analyser la date-heure.
3. Trouvez une plage de lignes corrélées à chaque expérience spécifique en fonction de la correspondance de l'identifiant de chaîne dans la colonne A
4. Supprimez toutes les lignes avant de commencer la date-heure.
5. Modifiez le temps d'expérience écoulé (en temps décimal) pour commencer à la date-heure d'entrée.
J'ai réussi à tout jusqu'au n ° 5, où je reçois sans cesse des messages d'erreur. Idéalement, je soustrairais simplement le nombre dans la première ligne de la plage pour chaque expérience de chaque cellule dans la colonne du temps écoulé. Une boucle aurait-elle plus de sens ici ? Dois-je simplement créer une nouvelle colonne pour chaque temps écoulé des expériences, puis recombiner ? Merci pour toute aide et scripts.
ScriptRe : JSL : modifier les valeurs dans une plage de lignes en fonction des chaînes correspondantes dans une 2e colonne ?Merci, cela a été très utile, j'ai réussi à faire fonctionner cela dans mon script mais j'ai rencontré un autre obstacle. Les points de données ne correspondent pas parfaitement à mon heure de début, donc je me retrouve avec mon premier point de temps décalé jusqu'à une minute. Je voudrais tirer ce premier point de temps à 0 au lieu de ~ 0,01 actuellement. Cependant, je n'obtiens aucune valeur dans ma colonne de temps ajusté. Voici mon code où le timestart est fourni.
t1 = dt << Get Rows Where (:BatchID == "ABCD");
t2 = dt << Get Rows Where (:BatchID == "EFGH");
dt << New Column("TimeStart", Number);
:TimeStart[t1] = timestart1;
:TimeStart[t2] = timestart2;
dt << New Column("NewEFT", Number, Formula((:Datetime-:TimeStart)/3600));
dt << Select Where(:NewEFT< 0);
dt << delete rows;
dt << Delete Columns("EFT_hrs");
dt << New Column("Adjusted EFT", Number);
:Adjusted EFT[t1] = :NewEFT - min(:NewEFT[t1]);
:Adjusted EFT[t2] = :NewEFT - min(:NewEFT[t2]);Re : JSL : modifier les valeurs dans une plage de lignes en fonction des chaînes correspondantes dans une 2e colonne ?Vous pourriez trouver quelque chose d'intéressant dans ce fil , bien que les détails dépendent du format spécifique de vos données.