comment créer deux boucles imbriquées ?Salut - J'essaie d'écrire un script qui suit ce flux de travail :
1 - commencer une boucle à une certaine date et heure de début (par exemple, le 1er octobre 2021 à 11h00).Je ferai référence à cela comme ligne n.Obtenir la valeur de col1[row n].
2 - aller à la ligne suivante, n+1. définir col2 = col1 [n+1] - col1[n].
3 - aller à la ligne suivante, n+2, définir col2 = col1 [n+2] - col1[n]
4 - aller à la ligne suivante, n+3, définir col2 = col1[ n+3] - col1[n].Continuez à parcourir chaque ligne suivante jusqu'à datetime[n+k] = datetime[n] + 7 jours.(Notez que k variera en fonction de l'incrément de temps entre les lignes au fur et à mesure que la boucle avance ; par exemple, le temps augmente d'une ligne à l'autre de 5 minutes, 15 minutes, 1 heure, etc., selon la ligne en question.)
5 - Répétez les étapes 1 à 4 pour chaque nouvelle semaine de données en utilisant une nouvelle "date de début" obtenue à l'étape 4. Continuez à parcourir encore 7 jours de données.
6 - Répétez l'étape 5 jusqu'à ce que la table de données soit à court de lignes.
L'objectif est de faire des calculs sur les données col1 qui comparent la valeur d'une semaine de lignes à la première ligne de cette semaine, puis de répéter cela encore et encore pour chaque semaine suivante (semaine 2, semaine 3, semaine 4, etc.) jusqu'à ce que tous lignes ont été traitées.: )
Ingénierie de la qualité et des procédésRe : comment créer deux boucles imbriquées ?Merci Vince !Ce sera utile.Je pense que je suis sur la bonne voie maintenant.: )
Re : comment créer deux boucles imbriquées ?D'accord, on dirait que vous dites
Soustraire le premier point d'écoulement chaque jour de chaque flux ?C'est ce que vous essayez de faire ?Je suppose parce que je ne pense pas que 13h15 soit une chose.:D
Names default to here(1);
dt = current data table(); // this assumes your table
// I'm going to make a bunch of extra columns to kind of show you smaller steps
// we really want to be able to say, This is the first row of the day
// so let's make a date column
dt << New Column("Just Date", <<FORMULA></FORMULA>
vous une fois que vous avez la plus petite ligne pour la journée, il vous suffit de faire la dernière nouvelle colonne autant de fois pour autant de colonnes que vous souhaitez calculer la différence.
J'espère que je n'ai pas trop compliqué les choses, car je n'ai certainement pas répondu à votre question initiale sur les boucles imbriquées.
Re : comment créer deux boucles imbriquées ?Je viens de faire un exemple de tableau de ce que je suppose que vous disiez.Je viens de le faire aujourd'hui() + 1 seconde par rangée.
Je ne connaissais rien à votre tableau, alors je lui ai juste fait faire toutes les colonnes.
et je ne comprends pas votre message initial.
Re : comment créer deux boucles imbriquées ?Le script a produit un nouveau tableau avec 5 lignes et les 6 colonnes suivantes :
semaine1, semaine2, semaine3, comparaison semaine1, comparaison semaine2, comparaison semaine3.
(Les 5 lignes correspondaient aux dates et heures du 13/10/2021 8:18:05 AM au 13/10/2021 8:18:09 AM.)
J'essaie de me retrouver avec une seule nouvelle colonne dans ma table existante, une colonne avec les résultats du calcul décrit dans mon message d'origine.J'aurais toutes les lignes de la table de données d'origine avec une nouvelle colonne calculée conformément à la description de mon message d'origine.
Re : comment créer deux boucles imbriquées ?Pour le contexte, ci-joint ma table JMP actuelle si cela peut aider.(Je souhaite calculer en fonction de la colonne "Pred Formula LOG_ECOLI_PEAR".)
Re : comment créer deux boucles imbriquées ?Merci Vince.Je passe par là maintenant .... en tant que débutant JSL (!) J'ai quelques questions qui m'aideront à suivre votre approche.Pourquoi 5 lignes ont-elles été ajoutées à une nouvelle table de données ?Pourquoi avez-vous eu besoin de "définir des valeurs" et pourquoi ces cinq chiffres ont-ils été sélectionnés ?Votre script dure 3 semaines, mais mon jeu de données réel a environ 120 semaines.
Enfin, comment le script sait-il quelle colonne est la valeur sur laquelle calculer (c'est-à-dire "flux" dans mon exemple) ?(Ma table de données a plus de colonnes que les trois montrées dans mon exemple.) Ne serait-il pas plus facile d'attribuer le nom de la colonne plutôt que de basculer entre les colonnes ?Il me manque probablement quelque chose ici.
Re : comment créer deux boucles imbriquées ?Bien sûr.Merci.Vous trouverez ci-joint un extrait d'un ensemble de données que j'ai créé dans Excel à titre d'exemple.
Re : comment créer deux boucles imbriquées ?Je pense que vous pourriez dire quelque chose comme ça?
Names default to here(1);
dt = New Table( "Untitled 1133",
Add Rows( 5 ),
New Column( "Week1",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
),
New Column( "Week2",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
),
New Column( "Week3",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
)
);
nc = ncols(dt);
for(i=1, i<=nc, i++,
col_name = column(i) << Get Name(); // get the original column name
Eval(EvalExpr( // you have to do this so you can substitute in the actual col_name instead of a variable
dt << New Column(col_name || " comparison",
// just take current row minus first row
formula(Expr(column(dt, col_name))[row()]-Expr(column(dt, col_name))[1])
)
));
);
Re : comment créer deux boucles imbriquées ?Pouvez-vous donner un petit tableau de données avec ce que vous attendez des données ?Ou du moins à quoi ressemble la table de données que vous utilisez ? Il semble qu'une formule de colonne serait une solution plus simple.