Comment placer des valeurs dans les cellules d'un tableau de données à l'aide de JSL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Je suis relativement nouveau dans JSL, mais j'ai écrit plusieurs scripts pour gérer les processus de génération de tableaux et de graphiques afin de tester qu'un produit logiciel que nous produisons rapporte correctement les résultats. L'un des problèmes que je rencontre actuellement est que je dois créer un graphique qui montre les temps signalés (facile), mais reflète également les résidus de la tranche de temps de rapport dans les tranches de temps futures.
Par exemple, je dois créer un graphique des temps d'attente où l'axe des x s'étend de minuit à minuit avec des intervalles de temps discrets de 15 minutes. J'ai un ensemble de données qui rapporte les temps d'attente et je regroupe l'heure à laquelle l'attente commence. Pour plus de simplicité, je distingue une ligne où un temps d'attente de 90 minutes est signalé pour un agent qui entre dans un emplacement à 9h05. La tranche horaire pour ce temps d'attente est 9h00. Le temps d'attente de 90 minutes est signalé et affiché dans le graphique dans la tranche horaire 9h00. Dans un graphique traditionnel, tous les autres temps seraient nuls, car toutes les autres données ont été exclues, mais en réalité, le graphique devrait montrer le temps d'attente de cet agent sur plusieurs intervalles de temps jusqu'à ce que le temps d'attente soit nul ; en fait, quel est le temps minimum que la prochaine personne entrant dans l'emplacement peut s'attendre à attendre si elle arrive à l'emplacement derrière l'agent en attente pendant n'importe quel intervalle de temps où l'agent actuel est toujours en file d'attente.
Je dois donc créer une matrice de tous les temps avec des valeurs de zéro dans les intervalles de temps, à l'exception de celles répertoriées ci-dessous.
Bac de temps Temps d'attente
9h00 90 minutes
9h15 80 minutes
9h30 65 minutes
9h45 50 minutes
10h00 35 minutes
10h15 20 minutes
10h30 5 minutes
J'ai déjà un script qui génère les colonnes pour chaque intervalle de temps après la dernière colonne de la table de données, et j'ai découvert qu'en raison du nombre de conditions impliquées et du fait que où, quand et à quelle fréquence des temps d'attente non nuls se produiront dans n'importe quelle ligne donnée de la matrice utilisant des formules de colonnes serait trop compliquée, si possible. J'espérais donc qu'il existe une méthode pour remplir des cellules individuelles afin d'utiliser des boucles imbriquées pour parcourir chaque ligne de chaque colonne de la matrice et déterminer quelle valeur de temps d'attente doit y être placée.
Mon autre option, que je préférerais de loin, serait de créer une nouvelle table de données incluant des enregistrements enfants pour gérer les données de débordement. Par exemple, un sous-ensemble du tableau de données est constitué des quatre lignes suivantes :
| ID d'agent | Emplacement | Jour | Heure d'entrée | Heure de sortie | Temps de transit minimum | Temps d'attente | Bac de temps |
|---|
184 | File d'attente de sortie | 1 | 7:10:24 | 7:10:24 | 0 | 0 | 07H00 |
| 185 | Entrée FIS | 1 | 06:41:38 | 06:41:38 | 0 | 0 | 6H30 DU MATIN |
| 185 | File d'attente des visiteurs | 1 | 06:41:38 | 7:00:51 | 0 | 1153 | 6H30 DU MATIN |
| 185 | Récupération des bagages | 1 | 7:01:59 | 7:01:59 | 0 | 0 | 07H00 |
Le script analyserait chaque ligne de la table d'origine et la copierait dans la nouvelle table de données. Dans la troisième ligne de l'exemple ci-dessus, le temps d'attente total, 1 153 s, est supérieur au temps passé à attendre dans la tranche horaire de 6h30 : tranche horaire de 6h45 - heure d'entrée dans la file d'attente de 6h41 :38 - Temps de transit de la file d'attente de 0 s = 202 s d'attente utilisées dans la tranche horaire de 6h30. Ainsi, la nouvelle table de données ajouterait des lignes enfants, ce qui ferait apparaître la région de la table de données ci-dessus comme suit :
| ID d'agent | Emplacement | Jour | Heure d'entrée | Heure de sortie | Temps de transit minimum | Temps d'attente | Bac de temps |
|---|
| 184 | File d'attente de sortie | 1 | 7:10:24 | 7:10:24 | 0 | 0 | 07H00 |
| 185 | Entrée FIS | 1 | 06:41:38 | 06:41:38 | 0 | 0 | 6H30 DU MATIN |
| 185 | File d'attente des visiteurs | 1 | 06:41:38 | 7:00:51 | 0 | 1153 | 6H30 DU MATIN |
| 185 | File d'attente des visiteurs | 1 | 06:41:38 | 7:00:51 | 0 | 951 | 6h45 |
| 185 | File d'attente des visiteurs | 1 | 06:41:38 | 7:00:51 | 0 | 51 | 07H00 |
| 185 | Récupération des bagages | 1 | 7:01:59 | 7:01:59 | 0 | 0 | 07H00 |
Les lignes en italique sont les lignes enfants de l'agent 185 dans la file d'attente des visiteurs indiquant les temps d'attente restants jusqu'à ce que l'agent 185 n'ait plus d'attente dans la file d'attente des visiteurs. Je pourrais ensuite utiliser ce tableau pour générer le graphique dont j'ai besoin car les enregistrements enfants fourniraient les données supplémentaires nécessaires.
Si quelqu'un peut fournir une méthode pour l'une ou l'autre de ces solutions, ce serait grandement apprécié.
Re : Comment placer des valeurs dans les cellules d'un tableau de données à l'aide de JSLMerci Ron.
C'est bon à savoir. Ces lignes semblaient superflues, mais comme JSL est un langage de script et que je viens de commencer à créer mes propres scripts, j'utilise en fait les capacités de script de JMP depuis quelques années, mais il s'agissait principalement d'enregistrer des scripts dans une table de données à partir d'une plate-forme. et effectuer quelques ajustements si nécessaire - je n'étais pas sûr si ou ce qu'il faisait en ce qui concerne l'ajout de lignes. Au début, j'ai eu l'impression que cela avait peut-être quelque chose à voir avec le pré-remplissage des lignes, j'ai réalisé que Add Row le faisait de manière non documentée.
En parlant de cela, selon le JMP Scripting Guide, Ajouter des lignes ( nombre ) ajoute le spécifié nombre de lignes, mais la boucle interne ajoute une nouvelle ligne à la fois en fonction de la durée de votre événement et copie les valeurs de colonne dans la ligne source, contenue sous forme de liste dans Rowi , dans la nouvelle ligne. Félicitations à vous pour avoir découvert cette fonctionnalité non documentée. C'est l'une des raisons pour lesquelles je suis resté bloqué, car j'ai une expérience considérable en programmation et je peux souvent comprendre un nouveau langage tant que la syntaxe est bien documentée. Rien de ce que j'ai trouvé dans la documentation de JMP ne mentionne que la fonction Ajouter des lignes peut accepter une variable contenant la liste des valeurs de colonne pour une ligne spécifique en tant que paramètre.
Re : Comment placer des valeurs dans les cellules d'un tableau de données à l'aide de JSLsalut MD,
je suis heureux que mon script vous ait été utile. quand je l'ai écrit, le complément n'était pas disponible.
concernant le z; je viens de le vérifier maintenant et ce n'est pas nécessaire. la boucle devrait fonctionner correctement sans cela. Je pensais qu'il fallait avoir le z dans la boucle for pour qu'elle compte les temps passés.
lors du test du script, cela m'a aidé à contrôler son action en ayant le numéro de boucle disponible à tout moment.
Meilleur,
Ron.
Re : Comment placer des valeurs dans les cellules d'un tableau de données à l'aide de JSLQuestion.
Dans le bloc de code où vous créez de nouvelles lignes en fonction de la durée de l'événement,
Pour ( je = 1 , je <= rangéeN , je ++,
Rowi = dt << obtenir une ligne ( je ) ;
Pour ( z = 1 , z <= ( : Nom ( "Durée de l'événement" )[ je ] - 1 ) , z ++,
z ;
dt << ajouter une rangée ( Rowi ) ;
dt << exécuter des formules ;
) ;
) ;
qu'est-ce que la ligne qui est juste z ; faire?
Re : Comment placer des valeurs dans les cellules d'un tableau de données à l'aide de JSLRon,
Merci pour l'info. Le complément n'a pas fonctionné pour moi, mais la révision de votre code pour le problème de tracé à bulles a résolu le problème que je rencontrais. Il a fallu toute la journée pour créer le script dont j'avais besoin, mais le code que vous avez fourni pour ajouter des lignes enfants afin de combler les lacunes dans les données m'a aidé à terminer ce qui serait autrement resté une impasse pendant un certain temps.
Re : Comment placer des valeurs dans les cellules d'un tableau de données à l'aide de JSLSalut mdr,
je ne suis pas sûr de bien comprendre votre question mais essayez ces deux liens :
1) Complément de colonne Développer par fréquence
2) tracés à bulles - intervalles de temps inégaux