Scripting a loop (doble loop quizás)Hola,
Necesito ayuda para crear un script para un cliente (ver archivo adjunto).
Quiere calcular la columna "tiempo relativo" automáticamente en JMP (mientras que aquí se calcula fuera de línea en Excel).
Para cada "Número de lote", cuando "Nuevo activador de lote" = 1, la "Fecha / Hora" de la fila correspondiente se utiliza como referencia (se establece en "0") y el "tiempo relativo" se calcula como [Fecha / Hora i - Ref. Fecha / hora].
Todavía no tengo "fluidez en el guión", se agradecería cualquier ayuda.
Gracias.
Emmanuel
Re: Scripting a loop (doble loop quizás)Hola Emmanuel,
La forma más sencilla de hacerlo es de forma interactiva, utilizando fórmulas de columna.
- Primero, edite la fórmula de columna que ya tiene para el nuevo indicador de lote, para permitir la primera fila. También queremos que el valor sea igual a 1 aquí. Luego, tendremos 1 para la primera fila y cualquier fila que cumpla con los criterios de "nuevo lote". (Vea la imagen de la fórmula inmediatamente a continuación).
- agregue una transformación de columna para la suma acumulativa de la fila "nuevo lote". El efecto de esto es numerar cada lote, lo que permite agrupar. (vea la captura de pantalla de la segunda fórmula y la captura de pantalla de la tabla de datos para ver la numeración)
- agregue una columna de fórmula para calcular la diferencia entre el tiempo y el tiempo mínimo de la columna, agrupados por la fila que agregó en el paso uno anterior (consulte la captura de pantalla de la tercera fórmula y la captura de pantalla de la tabla de datos para ver cómo se restablece a 0 el tiempo relativo para cada nuevo grupo).




Si el cliente insiste en crear un script, aquí hay un script que corrige la fórmula en la columna "nuevo activador de lote" y agrega las últimas 2 columnas en la tabla anterior.
Names Default To Here( 1 );
dt = Current Data Table();
dt:New Batch Trigger << formula( If( Row() == 1 | Dif( :Temperature C in °C, 1 ) + Dif( :Temperature B in °C, 1 ) < -60, 1, 0 ) );
dt << New Column( "Batch Group", formula( Col Cumulative Sum( :New Batch Trigger ) ) );
dt << New Column( "Rel time within group", formula( :"Date/Time"n - Col Minimum( :"Date/Time"n, :batch group ) ) );
Tabla adjunta.
Salud,
Brady
Re: Scripting a loop (doble loop quizás)Hola Brady,
gracias. Todavía estoy un poco confundido ya que no se correlaciona con su propia columna "Tiempo relativo". Creo que el problema proviene del hecho de que su fila de referencia está en el "medio" del lote y, por lo tanto, hay un "tiempo relativo" negativo.
Emmanuel