我经常想在数据表中找到一些分组变量的唯一组合。使用R+ dplyr时,我的正常工作流程是组合groupby(data, var1, var2, var3) %>% summarise,它返回一个包含列var1、var2和var3的新表,在data中找到的每个唯一值组合对应一行。
在DataFrames.jl中做这件事的惯用方法是什么?
发布于 2021-02-11 01:53:50
在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]))发布于 2021-02-11 02:17:48
或者,您可以这样写:
keys(groupby(data, [:var1, :var2, :var3]))以获取唯一分组关键字的向量。然后,如果需要,可以通过编写以下代码将它们收集到DataFrame中:
groupby(data, [:var1, :var2, :var3]) |> keys |> DataFramehttps://stackoverflow.com/questions/66142331
复制相似问题