在Julia中选择包含最小分组变量的DataFrame的行
我想知道是否有一种有效的方法可以在 Julia 中执行以下操作:
我有以下形式的数据帧:
julia> df1 = DataFrame(var1=["a","a","a","b","b","b","c","c","c"],
var2=["p","q","r","p","p","r","q","p","p"],
var3=[1,2,3,2,5,4,6,7,8])
9×3 DataFrame
? Row ? var1 ? var2 ? var3 ?
? ? String ? String ? Int64 ?
?????????????????????????????????
? 1 ? a ? p ? 1 ?
? 2 ? a ? q ? 2 ?
? 3 ? a ? r ? 3 ?
? 4 ? b ? p ? 2 ?
? 5 ? b ? p ? 5 ?
? 6 ? b ? r ? 4 ?
? 7 ? c ? q ? 6 ?
? 8 ? c ? p ? 7 ?
? 9 ? c ? p ? 8 ?
并且我想返回一个包含相同列的数据帧,但只返回var3根据var1.
我曾尝试使用拆分应用组合方法,但似乎无法找到一种在返回所有列的同时过滤行的方法。
感谢您对此的任何帮助。
回答
一种可能的方法:
julia> DataFrame([g[findmin(g.var3)[2],:] for g in groupby(df1, :var1)])
3×3 DataFrame
? Row ? var1 ? var2 ? var3 ?
? ? String ? String ? Int64 ?
?????????????????????????????????
? 1 ? a ? p ? 1 ?
? 2 ? b ? p ? 2 ?
? 3 ? c ? q ? 6 ?