Tomando el promedio de la columna basado en alguna condición en otra columnaEstoy buscando un método para tomar el promedio de los datos de la columna en función de alguna condición en otra columna.
La siguiente tabla muestra lo que quiero lograr.
Quiero tomar el valor de intensidad promediado en el tiempo y tabular una nueva columna con el valor promediado.
El promedio se tomará en función del 'Paso' y el Grupo como disparador, es decir, todos los valores de intensidad del mismo Grupo y el mismo Paso se
promediarse y tabularse una vez. Probé la función Col mean pero sigue insertando el valor promedio varias veces.
Por cierto, ¿es posible crear una nueva tabla con resumen (valor promedio)? La tabla incluirá el paso que se ha promediado, el grupo al que pertenece y el valor promedio (solo los datos en rojo)
| Sello(s) de tiempo | Paso | Intensidad | Grupo | (Quiero promedio) Por ejemplo |
1 | 1 | 110 | A | 119.7 |
| 2 | 1 | 115 | A | - |
| 3 | 1 | 123.5 | A | - |
| 4 | 1 | 124 | A | - |
| 5 | 1 | 126 | A | - |
| 3 | 2 | 132 | B | 205.73 |
| 4 | 2 | 140 | B | - |
| 5 | 2 | 345.2 | B | - |
| 1 | 2 | 10 | A | 18.33 |
| 2 | 2 | 20 | A | - |
| 3 | 2 | 25 | A | - |
| . | . | . | . | |
| . | . | . | . | |
Investigación del Consumidor y del MercadoRe: Tomando el promedio de la columna basado en alguna condición en otra columnagracias jim
Re: Tomando el promedio de la columna basado en alguna condición en otra columnaSu pregunta tiene un par de formas de ser interpretada.
- No incluir en el cálculo de la Media del Grupo, ningún valor de Intensidad > 100
If( Row() == 1 | Lag( :Group ) != :Group | Lag( :Step ) != :Step,
Col Mean( If( :Intensity > 100, :Intensity, . ), :Group, :Step ),
.
)
- Si el primer valor de Intensidad en el grupo es > 100 no calcule la media del grupo
If( (Row() == 1 | Lag( :Group ) != :Group | Lag( :Step ) != :Step) & :Intensity > 100,
Col Mean( :Intensity, :Group, :Step ),
.
)
Re: Tomando el promedio de la columna basado en alguna condición en otra columnaGracias, la fórmula funcionó. Por cierto, ¿es posible anidar esta fórmula 'Si' en otro 'Si' de modo que esta fórmula se ejecute solo cuando la 'intensidad' sea mayor que 100? ¿Cómo será la fórmula entonces?
Re: Tomando el promedio de la columna basado en alguna condición en otra columnaUna ligera modificación a la fórmula te dará lo que quieres.

If( Row() == 1 | Lag( :Group ) != :Group | Lag( :Step ) != :Step,
Col Mean( :Intensity, :Group, :Step ),
.
)