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

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

在 DataFrames.jl 中执行此操作的惯用方法是什么?

回答

在 DataFrames.jl 中,DataFrame 是行的集合。所以这里正确的心智模型是首先只选择你关心的列,然后从该表中获取唯一的行,如

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]))

获得唯一分组键的向量。然后,DataFrame如果您愿意,您可以通过以下方式将它们收集到 a :

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


以上是DataFrames.jl中唯一值组合汇总表的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>