需要在运算符(“ op”)之间找到前6个生产“值”。其次,将它们平均化。我需要DAX代码的帮助。
我尝试使用topN创建单独的表以查找最大值。然后使用averageX,CurrentGroup和GroupBy。错误是GroupBy语句必须找到CurrentGroup的平均值,必须引用CurrentGroup或常量。
Table =
GROUPBY (
GROUPBY (
fat,
'fat'[op],
"topn", TOPN( 6, fat, fat[Value],DESC)
),
'fat'[op],
"mn",SUMX( CURRENTGROUP (), [topn] )
)
这在R中更容易实现:
dt<-read.table("data2.csv", TRUE)
library(plyr)
n=6 #or other
df1<-ddply(dt,~name,summarise,mean=mean(tail(sort(val),n)))
答案 0 :(得分:0)
如果我的理解正确,您想对每个6
取最高的op
值并将其取平均值以得到一行。
如果这是正确的,那么我建议这样的事情:
AvgTop6 =
SUMMARIZECOLUMNS(
fat[op],
"Mean",
CALCULATE(
AVERAGE(fat[Value]),
FILTER(fat, RANK.EQ(fat[Value], fat[Value]) <= 6)
)
)