DataFrames.jl中唯一值组合汇总表
我经常想在数据表中找到一些分组变量的唯一组合。使用R+dplyr,我的正常工作流程是组合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
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