下面是一个与我正在处理的数据集类似的表(尽管要简单得多(,我想计算一些度量值,然后找到度量值的百分位数。
Table Name: Data
Owner AgeRating OtherRating
A 1 2
A 4 4
A 4 6
B 3 3
B 3 9
B 7 4
C 8 8
C 4 2
首先-一个小背景:我首先取评级的平均值(按所有者(,然后通过将每个评级除以最大所有者评级来标准化所有评级-这创建了我想取的百分比:
NormAgeRating=
average(Data[AgeRating])/
calculate(
maxx(
SUMMARIZE(Data,[Owner],"avg",average([AgeRating]))
,[avg]
)
,all(Data[owner])
)
我有一个数据透视表,Rows是所有者,然后看起来像
Owner NormAgeRating
A .5
B .72
C 1
现在对于问题:我想要新的NormAgeRating
的.33percentile.inc
。我想用它将每个所有者分类到组中(<=33%ile或>33%ile(这就是我想要达到的目标:
Owner NormAgeRating 33%ile classification
A .5 .64 bottom
B .72 .64 top
C 1 .64 top
我尝试过这种方法,但没有成功,还有许多其他不同groupby的变体等,并且不断得到错误的值:
33%ile=percentilex.inc(all(data[owner]),[NormAgeRating],0.33)
如有任何帮助,将不胜感激
更新:当我以的形式尝试sumx
、countx
和averagex
时
=
averagex(
SUMMARIZE(
all(Data[Owner]),
[Owner],
"risk",[NormAgeRating]),
[risk]
)
我得到了正确的值,所以我不确定为什么使用percentilex.inc/exc
会产生错误的值。。。
PERCENTELEX(以及所有迭代器函数(在第一个参数中对表进行逐行操作。因此,在尝试计算百分比之前,您需要该表处于所需的粒度,这意味着您需要汇总Data[Owner]
,以便每个所有者都有一个唯一的行,而不是在原始列上迭代。
记住这一点,这两种度量可以写得类似:
NormAgeRating =
DIVIDE (
AVERAGE ( Data[AgeRating] ),
MAXX (
SUMMARIZE (
ALL ( Data[Owner] ),
Data[Owner],
"Avg", AVERAGE ( Data[AgeRating] )
),
[Avg]
)
)
33%ile =
PERCENTILEX.INC (
SUMMARIZE (
ALL ( Data[Owner] ),
Data[Owner],
"Risk", [NormAgeRating]
),
[Risk],
0.33
)