Rango salarial medio y cuartiles

Un usuario Pregunto ✅

MARIAGAJDUS

Hola

Soy un gran novato y estoy tratando de calcular los salarios de los empleados, por nivel. Esto implica encontrar el salario medio para cada nivel y calcular en qué parte del rango salarial se sienta cada empleado.
El rango que me gustaría usar es:

Cuartil 1 (El salario está más del 15% por debajo del valor medio)

Cuartil 2 (5% -15% por debajo del valor medio)

Punto medio (valor medio (+/- 5%))

Cuartil 3 (5% -15% por encima del valor medio)

Cuartil 4 (Más del 15% por debajo del valor medio)

El conjunto de datos tiene el siguiente aspecto:

Sueldo de identificación en el nivel GBP

1 100000 Nivel 55

2 16578 Nivel 15

3 13757 Nivel 20

Muchas gracias de antemano !!

Maria

En respuesta a MARIAGAJDUS

Hola, @MARIAGAJDUS

Puede probar la siguiente medida.

Quartile = 
var _med = 
MEDIANX(
    FILTER(
       'Table',
       [Level]=EARLIER('Table'[Level])&&
       [Country]=EARLIER('Table'[Country])
    ),
    VALUE([Salary in GBP])
)
return
SWITCH(
    TRUE(),
    [Salary in GBP]<0.85*_med,"Quartile 1",
    [Salary in GBP]>=0.85*_med&&[Salary in GBP]<0.95*_med,"Quartile 2",
    [Salary in GBP]>=0.95*_med&&[Salary in GBP]<1.05*_med,"Midpoint",
    [Salary in GBP]>=1.05*_med&&[Salary in GBP]<1.15*_med,"Quartile 3",
    [Salary in GBP]>=1.15*_med,"Quartile 4"
)

Saludos

Alano

Si este post ayudaentonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola, @MARIAGAJDUS

Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

Colina baja:

a1.png

Puede crear una columna calculada como se muestra a continuación.

Quartile = 
var _med = 
MEDIANX(
    FILTER(
       'Table',
       [Level]=EARLIER('Table'[Level])
    ),
    VALUE([Salary in GBP])
)
return
SWITCH(
    TRUE(),
    [Salary in GBP]<0.85*_med,"Quartile 1",
    [Salary in GBP]>=0.85*_med&&[Salary in GBP]<0.95*_med,"Quartile 2",
    [Salary in GBP]>=0.95*_med&&[Salary in GBP]<1.05*_med,"Midpoint",
    [Salary in GBP]>=1.05*_med&&[Salary in GBP]<1.15*_med,"Quartile 3",
    [Salary in GBP]>=1.15*_med,"Quartile 4"
)

Resultado:

a2.png

a3.png

Saludos

Alano

Si este post ayudaentonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

MARIAGAJDUS

En respuesta a v-alq-msft

¡Gracias Allan! Esto funcionó como un encanto una vez que converje mi columna de salario en un número.

Traté de añadir otra variable «país» en la función MedianX para que el cálculo considere tanto el nivel como el país del ID para producir el salario promedio, y luego atenderlos en cuartiles. ¿Podrías ayudarte con esto?

Gracias, María

En respuesta a MARIAGAJDUS

Hola, @MARIAGAJDUS

Puede probar la siguiente medida.

Quartile = 
var _med = 
MEDIANX(
    FILTER(
       'Table',
       [Level]=EARLIER('Table'[Level])&&
       [Country]=EARLIER('Table'[Country])
    ),
    VALUE([Salary in GBP])
)
return
SWITCH(
    TRUE(),
    [Salary in GBP]<0.85*_med,"Quartile 1",
    [Salary in GBP]>=0.85*_med&&[Salary in GBP]<0.95*_med,"Quartile 2",
    [Salary in GBP]>=0.95*_med&&[Salary in GBP]<1.05*_med,"Midpoint",
    [Salary in GBP]>=1.05*_med&&[Salary in GBP]<1.15*_med,"Quartile 3",
    [Salary in GBP]>=1.15*_med,"Quartile 4"
)

Saludos

Alano

Si este post ayudaentonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

MARIAGAJDUS

En respuesta a v-alq-msft

¡Gracias! Esto ha sido muy útil !!!

Amitchandak

@MARIAGAJDUS, no muy claro. PERCENTILEX. INC debe poder ayudar

si estos blogs pueden ayudar

https://blog.enterprisedna.co/implementing-80-20-logic-in-your-power-bi-analysis/
https://forum.enterprisedna.co/t/testing-the-pareto-principle-80-20-rule-in-power-bi-w-dax/459
https://finance-bi.com/power-bi-pareto-analysis/
https://community.powerbi.com/t5/DAX-Commands-and-Tips/Calculate-the-sum-of-the-top-80/td-p/763156

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *