Ciao
Ho una tabella delle fasi del processo e dei tempi di processo per diversi ID. Tuttavia, alcuni dei miei passaggi di processo si verificano più di una volta nel processo per ciascun ID. Vorrei creare una colonna che separi tutti i passaggi del processo in "sintesi" o "elaborazione". Questi gruppi verrebbero determinati in base a se si verificano prima o dopo un'altra fase del processo.
Voglio che la formula trovi il tempo della fase di spawn PER OGNI ID e la confronti con tutti gli altri step step del processo per quell'ID.
Stavo cercando di utilizzare una sorta di loop, ma sono nuovo nello scripting e i loop sono molto confusi!
C'è un modo per fare questo???
Ad esempio, quello che ho assomiglia a questo e voglio aggiungere la colonna Category.
| ID | Fase di processo | Tempo di processo | Categoria |
| 10 | essiccazione | 09:00 | Sintesi |
| 10 | deposto le uova | 09:30 | Sintesi |
| 10 | essiccazione | 10:00 | in lavorazione |
| 10 | Finito | 11:00 | in lavorazione |
| 11 | essiccazione | 02:00 | Sintesi |
| 11 | deposto le uova | 02:30 | Sintesi |
| 11 | essiccazione | 02:45 | in lavorazione |
| 11 | Finito | 04:00 | in lavorazione |
| 12 | essiccazione | 07:30 | Sintesi |
| 12 | deposto le uova | 07:45 | Sintesi |
| 12 | essiccazione | 08:00 | in lavorazione |
| 12 | Finito | 09:00 | in lavorazione |
Qualche idea??
Grazie!
Questo script sembra essere quello che vuoi. Potrebbe essere trasformato in una formula se preferisci questo
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";
);
);
Lo script presuppone che i dati siano ordinati per ID. Tuttavia, se il spawnTime è stato appena calcolato per ciascun ciclo attraverso i dati, la tabella non dovrebbe essere ordinata. Potrebbe rallentare lo script, calcolando SpawnTime su ogni ciclo, ma potrebbe essere un compromesso che si desidera effettuare.