功效查询:有没有一种方法可以计算每个拥有多个年级的学生的平均成绩?

时间:2020-11-02 11:42:00

标签: powerquery

我有一张带有学生证的表格(1-11),它们重复5次,每个学生在3个科目中有5个年级。我的任务是在表格中创建3个新列,其中每3个科目的每个学生的平均值。我的问题是我不知道该怎么做,因为我的教授要求全班同学以这种非常奇怪的方式来做这件事,这使得很难弄清楚该怎么做。

enter image description here

如图所示,这是表格的一个非常奇怪的设置。 我的问题正如我之前描述的那样。我需要用每位学生的平均成绩来创建3个新列,每个科目的5个年级。

1 个答案:

答案 0 :(得分:0)

您可以按ID将表格的副本分组,并按等级对列进行平均,然后将其与原始表格合并。

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSAWNjpVgdCM8IiE3gPGMgNgXzjMAsHSULOM8MiC3hPHOQSQZKsbEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [id = _t, gradeA = _t, gradeB = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"gradeA", Int64.Type}, {"gradeB", Int64.Type}}),
    Buffer1 = Table.Buffer(#"Changed Type"),
    grouped = 
        let
            sourceGroup = Buffer1,
            grouped = Table.Group(sourceGroup,"id",{{"AVGgradeA", each List.Average([gradeA]), type nullable number}, {"AVGgradeB", each List.Average([gradeB]), type nullable number}})
        in
            grouped,
    #"join" = Table.Join(Buffer1,"id",grouped,"id")
in
    #"join"