Power BI中计算多分组多数值间平均间隔的方法求助
在Power Query中计算同地点读数的平均间隔
分步操作方案
第一步:按地点分组,保留每组的所有读数
进入Query Editor,选中数据表后点击「主页 > 分组依据」:- 分组列选择你的地点列(比如
Location) - 新列名设为
MileList,操作选择「所有行」,点击确定。这一步会把每个地点对应的所有读数打包成一组。
- 分组列选择你的地点列(比如
第二步:添加自定义列计算组内平均间隔
点击「添加列 > 自定义列」,输入以下公式(注意替换Mile为你的读数列名,Location为地点列名):let 排序读数 = List.Sort([MileList][Mile]), 计算间隔 = List.Difference(排序读数, {0}), 平均间隔 = if List.Count(排序读数) > 1 then List.Average(计算间隔) else null in 平均间隔公式逻辑:先把当前地点的所有读数排序,再计算相邻读数的差值,最后求这些差值的平均值(如果该地点只有1个读数,返回null)。
第三步:整理结果
删除不需要的MileList列,就能得到每个地点对应的平均间隔数据。
简化高效版(直接在分组时完成计算)
如果不想保留中间的MileList列,可以在分组时直接添加自定义计算:
- 打开「分组依据」对话框,设置分组列为
Location - 添加两个分组操作:
- 第一个:操作选「所有行」,列名
MileList - 第二个:操作选「自定义」,列名
AvgInterval,输入简化公式:let sorted = List.Sort([MileList][Mile]), diffs = List.Difference(sorted, {0}) in if List.Count(sorted)>1 then List.Average(diffs) else null
- 第一个:操作选「所有行」,列名
- 确定后直接得到带平均间隔的分组结果,删除
MileList即可。
错误原因说明
你之前用双索引+自合并的方法出错,是因为没有先按地点分组过滤,导致跨地点计算了读数差值。上面的方法都是先把数据按地点拆分到独立组内,再在组内处理,从根源避免了跨组错误。
内容的提问来源于stack exchange,提问作者Gil Wadsworth
相关产品推荐
相关产品推荐

