按照该模式,先将数据集按照学生名称 split 为不同组,其次对每组数据 apply 均值函数,最后 combine 每组的结果。

    在 split 步骤中使用的函数为 groupby,并将函数的第二个参数列 ID 指定为数据集分割的条件。

    1. groupby(all_grades(), :name)

      应用此函数时,需调用 combine 函数:

      想象一下,如果没有 groupby 和 函数,则需按照下文这样做。 我们必须循环遍历数据以将其分割为多组,然后循环遍历每组以应用函数,以及 循环遍历每组以收集最终结果。 因此,split-apply-combine 模式是值得掌握的技术。

      1. group = [:A, :A, :B, :B]
      2. X = 1:4
      3. df = DataFrame(; group, X, Y)

      操作与之前类似:

      注意到,我们在右箭头 => 前使用了 . 点运算符,这表示 mean 函数将应用到多个列 。

      1. gdf = groupby(df, :group)
      2. combine(gdf, [:X, :Y] .=> rounded_mean; renamecols=false)