Calcule el promedio móvil basado en 2 columnas categóricas y en datos combinadosTengo un conjunto de datos con una media de Docenas de huevos por OrderId y OrderDate para Trial (Before, After) y TrialWeek (1, 2, 3, 4, 5). Me gustaría usar la función de promedio móvil para calcular la media de Docenas al final de cada semana, usando los datos de las semanas anteriores, y luego ingresar este número en una nueva columna. Por lo tanto, debería haber docenas medias repetidas por cada fila que tengan la misma prueba y TrialWeek.
Por ejemplo:
Prueba == Antes & TrialWeek == 1 = Docenas promedio para TrialWeek 1
Prueba == Antes & TrialWeek == 1 & 2 = Promedio de docenas TrialWeek 2
Trial == Before & TrialWeek == 1 & 2 & 3 = Mean Dozens TrialWeek 3, y así sucesivamente.
Moving Average quiere que ingrese el número de filas en las que se calcula el promedio, sin embargo, el número de filas por TrialWeek no es el mismo, por lo que no puedo usar un número fijo de filas para calcular esto. Sé que tendré que escribir una fórmula para hacer esto, pero no sé cómo componer la fórmula. Estoy usando JMP Pro 16. ¡Cualquier ayuda será muy apreciada!
ScriptingRe: Calcular el promedio móvil basado en 2 columnas categóricas y en datos combinados¿Es esto lo que estás buscando?

x = .;
curWeek = :TrialWeek;
If( :Trial == "Before" & :TrialWeek != :TrialWeek[Row() + 1],
x = Col Mean( If( :Trial == "Before" & :TrialWeek <= curWeek, :Dozens, . ) )
);
x;
Re: Calcular el promedio móvil basado en 2 columnas categóricas y en datos combinadosGracias @txnelson !
Ajusté el código para calcular también el promedio móvil para Prueba == Después, por lo que parece estar funcionando. Pero noté que el código no calculaba el promedio móvil para TrialWeek == 1 a menos que tuviera la tabla ordenada.
x = .;
curWeek = :TrialWeek;
If(
:Trial == "Before" & :TrialWeek != :TrialWeek[Row() + 1], x = Col Mean( If( :Trial == "Before" & :TrialWeek <= curWeek, :Dozens, . ) ),
:Trial == "After" & :TrialWeek != :TrialWeek[Row() + 1], x = Col Mean( If( :Trial == "After" & :TrialWeek <= curWeek, :Dozens, . ) )
);
x;