DataFrames.jl中唯一值组合汇总表

DataFrames.jl中唯一值组合汇总表,dataframe,julia,Dataframe,Julia,我经常想在数据表中找到一些分组变量的唯一组合。使用R+dplyr,我的正常工作流程是组合groupby(data,var1,var2,var3)%%>%summary,它返回一个新表,其中列var1,var2,var3,在data中找到的值的每个唯一组合对应一行 在DataFrames.jl中,这样做的惯用方法是什么?在DataFrames.jl中,数据帧是行的集合。因此,这里正确的心智模型是首先只选择您关心的列,然后从该表中获取唯一的行,如中所示 select(data, [:var1, :v

我经常想在数据表中找到一些分组变量的唯一组合。使用R+dplyr,我的正常工作流程是组合
groupby(data,var1,var2,var3)%%>%summary
,它返回一个新表,其中列
var1
var2
var3
,在
data
中找到的值的每个唯一组合对应一行


在DataFrames.jl中,这样做的惯用方法是什么?

在DataFrames.jl中,数据帧是行的集合。因此,这里正确的心智模型是首先只选择您关心的列,然后从该表中获取唯一的行,如中所示

select(data, [:var1, :var2, :var3]) |> unique!
(或者如果你讨厌烟斗/喜欢额外的帕伦斯:

unique!(select(data, [:var1, :var2, :var3]))
此处建议使用
unique!
,因为
select
会复制基础列。或者,您可以使用视图或索引,但这需要
unique
(不会改变基础列向量),以免损坏原始数据帧:

unique(data[!, [:var1, :var2, :var3]])
unique(view(data, :, [:var1, :var2, :var3]))

或者你可以写:

keys(groupby(data, [:var1, :var2, :var3]))
获取唯一分组键的向量。然后,如果需要,可以通过以下方式将它们收集到
数据帧中:

groupby(data, [:var1, :var2, :var3]) |> keys |> DataFrame