Tengo una tabla de datos que tiene incrementos de tiempo de 0 -> n para cada paso para una serie de varios pasos.
Me pregunto si hay un bkm en el script para hacer que el tiempo de cada paso comience en el tiempo de finalización del paso anterior.
alias:
actualmente: paso1, tiempo = 0 -> 7, paso2, tiempo = 0 -> 12
objetivo: paso1, tiempo = 0 -> 7, paso2, tiempo7 -> 19
¿Consejo?
Columnas:
etiqueta del sensor | Valor | tiempo | Paso
Aquí hay una tabla de datos de muestra y un script simple que ajustará el tiempo cuando cambia el paso.El script muestra primero la tabla de datos durante 10 segundos, para que pueda ver cómo se ve la tabla original, y luego sigue adelante y ejecuta el pequeño script para ajustar los valores de tiempo.
Names Default To Here( 1 );
dt = New Table( "example",
Add Rows( 42 ),
New Column( "time",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
)
),
New Column( "Step",
Character,
"Nominal",
Set Values(
{"Step1", "Step1", "Step1", "Step1", "Step1", "Step1", "Step1", "Step1",
"Step2", "Step2", "Step2", "Step2", "Step2", "Step2", "Step2", "Step2",
"Step2", "Step2", "Step2", "Step2", "Step2", "Step3", "Step3", "Step3",
"Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3",
"Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3",
"Step3", "Step3"}
)
)
);
wait(10);
For Each Row(
If( Row() == 1,
adder = 0,
If( Lag( :step ) != :step,
adder = :time[Row() - 1]
)
);
:time = :time + adder;
);esto funciona muy bien! Estoy notando solo un pequeño problema. en el incremento de tiempo en el que cambia el paso, se repite el valor de tiempo, en lugar de incrementarlo. Todavía estoy tratando de entender la función LAG. ¿Algun consejo?

Finalmente, ¿algún consejo para agregar marcadores del eje x en el script para etiquetar los bloques de la traza?
Puedo crear nuevas columnas para mínimo / máximo local según el paso #, pero no estoy seguro de cómo escribir eso en una etiqueta de eje.


Con respecto a su primer problema, su requisito para el incremento entre pasos fue
objetivo: paso1, tiempo = 0 -> 7, paso2, tiempo7 -> 19
Tenga en cuenta que el valor de tiempo fue el mismo para el último valor en el primer paso, así como la primera vez en el segundo paso.
Si desea incrementar entre los pasos, simplemente cambie el valor del sumador a cualquier incremento adicional que desee
adder = :time[Row() - 1] + 1
No entiendo lo que pides cuando dices " agregar marcadores del eje x en el script para etiquetar los bloques de la traza ".
Finalmente, todas las funciones, como Lag (), están documentadas en el Índice de secuencias de comandos, disponible en el menú desplegable Ayuda.