Excel 如何基于分组变量计算PowerQuery中的百分位数?

Excel 如何基于分组变量计算PowerQuery中的百分位数?,excel,powerquery,percentile,Excel,Powerquery,Percentile,我有几列数据,我需要将excel版本的“PERCENTILE”转换为Powerquery格式 我有一些代码作为函数添加进来,但并没有准确地应用,因为它不允许按类别和年份对数据进行分组。因此,任何完全自由裁量的1.5-2.5和2014都需要添加到百分位数数组中,同样,任何完全自由裁量的2.5-3.5和2014都需要添加到不同的百分位数数组中 let Source = (list as any, k as number) => let Source = list, #"Conver

我有几列数据,我需要将excel版本的“PERCENTILE”转换为Powerquery格式

我有一些代码作为函数添加进来,但并没有准确地应用,因为它不允许按类别和年份对数据进行分组。因此,任何完全自由裁量的1.5-2.5和2014都需要添加到百分位数数组中,同样,任何完全自由裁量的2.5-3.5和2014都需要添加到不同的百分位数数组中

let

 Source = (list as any, k as number) => let

 Source = list,

 #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

 #"Sorted Rows" = Table.Sort(#"Converted to Table",{{"Column1", Order.Ascending}}),

 #"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "Index", 1, 1),

 #"Added Custom" = Table.AddColumn(#"Added Index", "TheIndex", each Table.RowCount(#"Converted to Table")*k/100),

 #"Filtered Rows" = Table.SelectRows(#"Added Custom", each [Index] >= [TheIndex] and [Index] <= [TheIndex]+1),

Custom1 = List.Average(#"Filtered Rows"[Column1])

   in

 Custom1

in

 Source
let
Source=(列表为任意,k为数字)=>let
来源=列表,
#“转换为表”=表.FromList(Source,Splitter.SplitByNothing(),null,null,ExtraValues.Error),
#“排序行”=表.Sort(#“转换为表”,{{“Column1”,Order.升序}),
#“添加的索引”=表.AddIndexColumn(#“排序行”,“索引”,1,1),
#“添加的自定义”=Table.AddColumn(#“添加的索引”、“索引”、每个Table.RowCount(#“转换为Table”)*k/100),

#“筛选行”=表格。选择行(#“添加自定义”,每个[Index]>=[TheIndex]和[Index]基于其他网站上的一些发现和大量谷歌搜索(大多数人只想使用DAX,但如果你只使用Power Query,你就不能!),有人发布了一个非常有用的答案:

基本上:

/PercentileInclusive Function

(inputSeries as list, percentile as number) => 
let
    SeriesCount = List.Count(inputSeries),
    PercentileRank = percentile*(SeriesCount-1)+1, //percentile value between 0 and 1
    PercentileRankRoundedUp = Number.RoundUp(PercentileRank),
    PercentileRankRoundedDown = Number.RoundDown(PercentileRank),
    Percentile1 = List.Max(List.MinN(inputSeries,PercentileRankRoundedDown)),
    Percentile2 = List.Max(List.MinN(inputSeries,PercentileRankRoundedUp)),
    Percentile = Percentile1+(Percentile2-Percentile1)*(PercentileRank-PercentileRankRoundedDown)
in
    Percentile
上面将复制Excel中的百分位数函数-您可以使用“新查询”和高级编辑器将其作为查询传递。然后在分组数据后调用它-

表.组(重命名列,{“国家”},{{“销售总额”,每列) List.Sum([Amount Sales]),类型编号},{“95%销售额”,每个 List.Average([Amount Sales]),类型number})

在上面的公式中,RenamedColumns是上一步的名称 在脚本中。更改名称以匹配实际案例。我假设 预分组销售金额列为“销售金额”。的名称 分组列为“销售总额”和“95%销售额”

下一步修改组公式,替换List.Average 百分位数包括:

表.组(重命名列,{“国家”},{{“销售总额”,每列) List.Sum([Amount Sales]),类型编号},{“95%销售额”,每个 百分位数([Amount Sales],0.95),类型号})

这适用于我的数据集,并匹配类似的数据集