cancel
Showing results for
Did you mean:
New Member

## Calculate Average per category

Hello everyone,

I spent a lot of time already looking at similar problems to the one I have, but nothing really worked for me.  Assume I have a table with a category and some values.

How can I calculate a measure or a new column that shows the average of the values for one category like in my example below?

category | value | average

----------------------------

A | 2 | 1.5

A | 1 | 1.5

B | 3 | 2

B | 2 | 2

B | 1 | 2

AverageMeasure= CALCULATE(AVERAGE(table[value]); FILTER(table; table[category]=EARLIER(table[category]))

but it gives me an error saying that EARLIER refers to an earlier row context that does not exist. And when I put an explicit category in the FILTER statement, the result seems to be just the original value per row.

Any ideas?

1 ACCEPTED SOLUTION
Solution Sage

Hi @mschultens,

Did you use the original expression in the calculated column? It works for me. Please refer:

Or you can try measure:

```AverageMeasure =
CALCULATE (
AVERAGE ( Table3[Value] ),
FILTER ( ALLSELECTED ( Table3 ), Table3[Category] = MAX ( Table3[Category] ) )
)```

Thanks,
Xi Jin.

10 REPLIES 10
Community Champion

Try this MEASURE.

Earlier typically works in a Column not a MEASURE

```AverageMeasure =
CALCULATE ( AVERAGE ( table[value] ), ALLEXCEPT ( Table, table[category] ) )```

Regards
Zubair

Helper II

Thank you!  That just helped me with a similar issue too.

Community Champion

@mschultens

You can simply use Average(table[value]) as well if you choose not to put VALUE in the Table VISUAL

Your formula would work as a calculated column

Regards
Zubair

New Member

Thank you, but that does not work for me, because I want to put the different averages into one visualization.

Community Champion

@mschultens

Try your own formula as a calculated column.

Regards
Zubair

New Member

It gives me an error saying that a single value for category cannot be determined. I tried putting a MAX() in front, but that gives the same error.

Solution Sage

Hi @mschultens,

Did you use the original expression in the calculated column? It works for me. Please refer:

Or you can try measure:

```AverageMeasure =
CALCULATE (
AVERAGE ( Table3[Value] ),
FILTER ( ALLSELECTED ( Table3 ), Table3[Category] = MAX ( Table3[Category] ) )
)```

Thanks,
Xi Jin.

Helper II

Hi

I'd like to use this solution, but I also have a subcategory and year that I have to take into account.

I tried using extra filters for subcategory and year, but keep getting errors.

Can someone help me?

This is what my table looks like

Helper III

I have a question about average too

I have this data, what I want to achieve :

> Average Total : points PR+WAR from all technician

> Average PR & WAR : point only for PR OR only WAR based on FILTER

This is my code but gave me value :

YESTERDAY

> Average Total : correct value 7,5 this DAX gave me 3,75  (WRONG)

> Average PR & WAR : correct value PR = 3 and WAR = 4.5 this DAX gave me PR = 3 and WAR = 4.5 (CORRECT)

Bassicly how to make this DAX give a correct value for Average Total and Average PR & WAR

``````1. AVG_Points = AVERAGE(CL_PROD[Points])

2 AVG_Points_Filter = IF(MAX(CL_PROD[WO_Type])= "PR" || MAX(CL_PROD[WO_Type])= "WAR",
[AVG_Points],[AVG_Points]*2)``````

New Member

I had a mistake somewhere else in my model. Both solutions work fine! Thank you very much guys! 🙂

Announcements

#### 2022 Release Wave 1 Plan

Power Platform release plan for the 2022 release wave 1 describes all new features releasing from April 2022 through September 2022.