Hola
Tengo una tabla de pasos de proceso y tiempos de proceso para diferentes ID. Sin embargo, algunos de mis pasos de proceso ocurren más de una vez en el proceso para cada ID. Me gustaría crear una columna que separe todos los pasos del proceso en "síntesis" o "procesamiento". Estos grupos se determinarán en función de si se producen antes o después de otro paso del proceso.
Quiero que la fórmula encuentre el tiempo del paso de generación para cada ID y lo compare con todos los otros tiempos de los pasos del proceso para esa ID.
Estaba tratando de usar algún tipo de bucle, pero soy nuevo en las secuencias de comandos y los bucles son muy confusos.
¿Hay alguna manera de hacer esto?
Por ejemplo, lo que tengo se ve así y quiero agregar la columna Categoría.
| CARNÉ DE IDENTIDAD | Paso de proceso | Tiempo de procesamiento | Categoría |
| 10 | El secado | 9:00 | Síntesis |
| 10 | Generado | 9:30 | Síntesis |
| 10 | El secado | 10:00 | Tratamiento |
| 10 | Terminado | 11:00 | Tratamiento |
| 11 | El secado | 2:00 | Síntesis |
| 11 | Generado | 2:30 | Síntesis |
| 11 | El secado | 2:45 | Tratamiento |
| 11 | Terminado | 4:00 | Tratamiento |
| 12 | El secado | 7:30 | Síntesis |
| 12 | Generado | 7:45 | Síntesis |
| 12 | El secado | 8:00 | Tratamiento |
| 12 | Terminado | 9:00 | Tratamiento |
¿¿Algunas ideas??
¡Gracias!
Este script parece ser lo que quieres. Se podría convertir en una fórmula si lo prefieres.
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";
);
);
El script asume que los datos están ordenados por ID. Sin embargo, si el spawnTime se calculó recientemente para cada bucle a través de los datos, la tabla no tendría que ser ordenada. Disminuiría la velocidad del script, calculando el SpawnTime en cada bucle, pero eso podría ser una compensación que usted quiera hacer.