Salut
J'ai un tableau des étapes du processus et des temps de traitement pour différents identifiants. Cependant, certaines de mes étapes de processus se produisent plusieurs fois dans le processus pour chaque ID. Je voudrais créer une colonne qui sépare toutes les étapes du processus en « synthèse » ou « traitement ». Ces groupes seraient déterminés selon s'ils se produisent avant ou après une autre étape du processus.
Je veux que la formule trouve l'heure de l'étape d'apparition POUR CHAQUE ID et la compare à toutes les autres heures d'étape du processus pour cet ID.
J'essayais d'utiliser une sorte de boucle, mais je suis nouveau dans les scripts et les boucles sont très déroutantes !
Est-ce qu'il y a un moyen de faire ça???
Par exemple, ce que j'ai ressemble à ceci et je souhaite ajouter la colonne Catégorie.
| IDENTIFIANT | Marche à suivre | Temps de traitement | Catégorie |
| dix | Séchage | 9h00 | La synthèse |
| dix | Engendré | 9h30 | La synthèse |
| dix | Séchage | 10h00 | Traitement |
| dix | Fini | 11h00 | Traitement |
| 11 | Séchage | 14h00 | La synthèse |
| 11 | Engendré | 14h30 | La synthèse |
| 11 | Séchage | 2h45 | Traitement |
| 11 | Fini | 16h00 | Traitement |
| 12 | Séchage | 7h30 | La synthèse |
| 12 | Engendré | 7h45 | La synthèse |
| 12 | Séchage | 8h00 | Traitement |
| 12 | Fini | 9h00 | Traitement |
Des idées??
Merci!
Ce script semble être ce que vous voulez. Cela pourrait être transformé en formule si vous préférez.
Names Default To Here( 1 );
dt = New Table( "Untitled 13",
Add Rows( 12 ),
New Column( "ID",
Character,
"Nominal",
Set Values( {"10", "10", "10", "10", "11", "11", "11", "11", "12", "12", "12", "12"} )
),
New Column( "Process Step",
Character( 16 ),
"Nominal",
Set Values(
{"Drying", "Spawned", "Drying", "Finished", "Drying", "Spawned", "Drying", "Finished", "Drying", "Spawned", "Drying",
"Finished"}
)
),
New Column( "Process Time",
Numeric,
"Nominal",
Format( "h:m", 12 ),
Input Format( "h:m" ),
Set Values( [32400, 34200, 36000, 39600, 7200, 9000, 9900, 14400, 27000, 27900, 28800, 32400] )
)
);
dt << New Column( "Category", Character );
For( i = 1, i <= N Rows( dt ), i++,
currID = dt:id[i];
If( i == 1,
spawnTime = dt:Process Time[(dt << get rows where( dt:id == currID & dt:Process Step == "Spawned" ))[1]]
);
If( i > 1,
If( dt:ID[i] != dt:ID[i - 1],
spawnTime = dt:Process Time[(dt << get rows where( dt:id == currID & dt:Process Step == "Spawned" ))[1]]
)
);
If( dt:Process Time[i] <= spawnTime,
dt:Category[i] = "Synthesis",
dt:Category[i] = "Processing";
);
);
Le script suppose que les données sont triées par ID. Cependant, si le spawnTime était fraîchement calculé pour chaque boucle dans les données, le tableau n'aurait pas besoin d'être trié. Cela ralentirait le script, en calculant le SpawnTime sur chaque boucle, mais cela pourrait être un compromis que vous souhaitez faire.