Tengo algunos datos experimentales que toman una medida cada minuto durante 10 minutos.
Luego quiero tomar un promedio para un subconjunto de puntos de datos en el medio del conjunto.
Mi solución es tener una columna oculta (: Rango) con una fórmula que contiene los criterios (ingresados a través de una ventana modal) y establece cada fila como 1 o 0 si se va a incluir en el cálculo.
Mi columna de salida luego usa la función Col Mean para tomar el promedio de los puntos de interés.
Esta parte está funcionando muy bien, pero también quiero que la primera fila en blanco (no incluida en el cálculo) tome el valor de la siguiente fila, lo que ayudará con la manipulación de datos en el futuro. He agregado la función Lag como se muestra a continuación.
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 )
)
El problema es que cuando ejecuto esto como un script, la función Lag no funciona. Si ingreso manualmente la fórmula anterior, funciona bien, pero el script a continuación solo completa las filas donde: Rango == 1, a pesar de que puedo ver que la fórmula se aplica correctamente a la columna.
New Column( "Mean Measurement", Formula(
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 ))))
¿Hay alguna razón para esto, y alguna forma en que pueda obligar a la columna a volver a evaluar la fórmula para que se ejecute correctamente?
La función Lag() opera en filas específicas, no es una función "vectorizada".En una función de columna, la fila está implícita (la fila de la tabla), por lo que funciona en la fórmula de la columna sin problemas.
Para su secuencia de comandos, si especifica la fila con el comando Row()== antes de la declaración de la función de retraso, entonces el Lag debería devolver un valor.
Row() = 3;
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 )
)
Además, solo para asegurarse de que está al tanto, el argumento del número de retraso para el retraso (:columna, ), si es un número negativo, en realidad es un "retraso hacia adelante".En el ejemplo que muestra arriba, buscaría el valor en la fila siguiente, no en la fila anterior.
¿Por qué toma 10 medidas a intervalos de 1 minuto? ¿Por qué usa una media de algunas observaciones en medio del curso del tiempo?
Puede obtener más información si analiza la curva completa como un valor de respuesta. Ver el Explorador de datos funcionales para más ideas. Puede analizar un 'DOE funcional' con JMP Pro.