按照该模式,先将数据集按照学生名称 split 为不同组,其次对每组数据 apply 均值函数,最后 combine 每组的结果。
在 split 步骤中使用的函数为 groupby
,并将函数的第二个参数列 ID 指定为数据集分割的条件。
groupby(all_grades(), :name)
应用此函数时,需调用 combine
函数:
想象一下,如果没有 groupby
和 函数,则需按照下文这样做。 我们必须循环遍历数据以将其分割为多组,然后循环遍历每组以应用函数,以及 循环遍历每组以收集最终结果。 因此,split-apply-combine 模式是值得掌握的技术。
group = [:A, :A, :B, :B]
X = 1:4
df = DataFrame(; group, X, Y)
操作与之前类似:
注意到,我们在右箭头 =>
前使用了 .
点运算符,这表示 mean
函数将应用到多个列 。
gdf = groupby(df, :group)
combine(gdf, [:X, :Y] .=> rounded_mean; renamecols=false)