Cómo recuperar un valor agregado (promedio / máximo, etc.) basado en una columna agrupada en Fórmula o en For-LoopHola a todos,
Estoy tratando de averiguar el número de veces que se activó la alarma. He creado una columna "Número de ocurrencia" basada en una lógica simple: si hay datos en la fila ()> fila () + 1, el disparador se restableció. Pero estoy recibiendo muchas falsas alarmas, como se ve en la imagen. El nuevo inicio de sesión que quiero implementar -
Si (
(Fila () - Fila () + 1)> = Abs (Max (Datos)) / 10, Restablecer el disparador, de lo contrario vivirlo como está
)
Algo como eso.
Puedo hacerlo en una forma de registro de bits, como hacer una tabla de resumen y luego agregar una columna de la tabla de resumen y luego comparar cada valor con una nueva columna. Funciona bien pero hace que mi guión sea lento.
¿Hay alguna manera mejor de implementarlo dentro de la fórmula o en el bucle For?
Alguna ayuda.
Gracias.

ScriptingRe: Cómo recuperar un valor agregado (media / Max, etc.) basado en una columna agrupada en Formula o en For-LoopPuede usar la función Col Max () para obtener el valor máximo dentro de los grupos y Lag () para comparar entre filas en la columna.
¿Podría proporcionar una tabla de datos con resultados "correctos" para facilitar la comprensión de la lógica detrás de las alarmas? ¿O simplemente desea verificar si el valor de datos actual es mayor que el valor anterior dentro del grupo (ID y subconjunto)?
Re: Cómo recuperar un valor agregado (media / Max, etc.) basado en una columna agrupada en Formula o en For-LoopHola @jthi
He agregado una columna - "No. de ocurrencia - Corregido".Que muestra los resultados correctos (deseados).

Re: Cómo recuperar un valor agregado (media / Max, etc.) basado en una columna agrupada en Formula o en For-LoopPuede calcular el 10% máximo directamente con la fórmula:
Col Max(:Data, :ID, :"Sub-set"n)*0.1
Todavía no estoy seguro de cómo se deben contar las ocurrencias, porque parece que nunca se restablece, pero podría retroceder 1 valor. Para verificar los valores de los valores de la columna de datos que están después de la "fila actual", puede usar Retraso (: Datos, - 1)

La regla que tiene se vería así como una fórmula:
If(:Data - Lag(:Data, -1) >= Abs(Col Max(:Data, :ID, :"Sub-set"n)) / 10,
1,
0
)
Re: Cómo recuperar un valor agregado (media / Max, etc.) basado en una columna agrupada en Formula o en For-LoopSe me ocurrió una fórmula que parece funcionar .........

Hay una discrepancia con su número de ocurrencia: corregido.En la fila 32, creo que .13 - 08 da como resultado .05, que es mayor que .034, lo que debería aumentar el número de ocurrencias.

Su implementación de una ocurrencia adicional tampoco se aplica hasta que se descubre la fila posterior.Por lo tanto, el uso de su fórmula debe tener un pequeño truco para no aplicar el cambio hasta que se procese la siguiente fila.A continuación se muestra la fórmula que utilicé para la columna "Cálculo de Jim"
If( Row() == 1 | :ID != Lag( :ID ) | :"Sub-set"n != Lag( :"Sub-set"n ),
hold = :Number of Occurance;
applyRow = 0;
);
If( :Data - Lag( :Data, -1 ) >= Abs( Col Max( :Data, :ID, :"Sub-set"n ) ) / 10,
applyRow = Row() + 1
);
If( Row() == applyRow,
applyRow = 0;
hold = hold + 1;
);
hold;