Julia Dataframe group by在另一个group by中

Julia Dataframe group by在另一个group by中,dataframe,julia,Dataframe,Julia,我有一个如下所示的数据帧: julia> DataFrame(val=1:10, percent=nothing) 10×2 DataFrame Row │ val percent │ Int64 Nothing ─────┼──────────────── 1 │ 1 2 │ 2 3 │ 3 4 │ 4 5 │ 5 6 │ 6 7 │ 7 8 │ 8

我有一个如下所示的数据帧:

julia> DataFrame(val=1:10,  percent=nothing)
10×2 DataFrame
 Row │ val    percent
     │ Int64  Nothing
─────┼────────────────
   1 │     1
   2 │     2
   3 │     3
   4 │     4
   5 │     5
   6 │     6
   7 │     7
   8 │     8
   9 │     9
  10 │    10
我想应用这个:

percent(df, threshold=0.33) = df / sum(df) .> threshold
计算百分比并检查它是否高于某列中每个值与同一列的总和的阈值

到按两次分组的数据帧。 我按USER_键将其分组,然后我想为每个列再次分组,然后对每个列合并/应用百分比函数。 我觉得没用

ERROR: MethodError: no method matching combine(::GroupedDataFrame{DataFrame}, ::var"#64#65")
我不明白这个错误。。。, 如果有人能帮忙,非常感谢

编辑: 这个例子有一点不同,我不知道如何很容易地重现它,这两列我也有一个列user_键,其中一些键可以有很多行,我想按user_键分组,然后按val分组

我希望列percent包含列val总数的百分比 对于这个数据帧,总数是10,我希望结果如下:

10×2 DataFrame
 Row │ val    percent
     │ Int64  Float64
─────┼────────────────
   1 │     1. 0.1
   2 │     2. 0.2
   3 │     3. 0.3
   4 │     4  0.4

我来回答编辑部分的问题。但这可能并不是你所需要的全部——请在问题中发表评论,让我了解你还需要什么

因此,解决问题的最简单方法是:

julia> df = DataFrame(val=1:4)
4×1 DataFrame
 Row │ val   
     │ Int64 
─────┼───────
   1 │     1
   2 │     2
   3 │     3
   4 │     4

julia> df.percent = df.val / sum(df.val)
4-element Array{Float64,1}:
 0.1
 0.2
 0.3
 0.4

julia> df
4×2 DataFrame
 Row │ val    percent 
     │ Int64  Float64 
─────┼────────────────
   1 │     1      0.1
   2 │     2      0.2
   3 │     3      0.3
   4 │     4      0.4
或者,您可以使用
transform

julia> df = DataFrame(val=1:4)
4×1 DataFrame
 Row │ val   
     │ Int64 
─────┼───────
   1 │     1
   2 │     2
   3 │     3
   4 │     4

julia> transform!(df, :val => (x -> x / sum(x)) => :percent)
4×2 DataFrame
 Row │ val    percent 
     │ Int64  Float64 
─────┼────────────────
   1 │     1      0.1
   2 │     2      0.2
   3 │     3      0.3
   4 │     4      0.4

请您为您的问题和所需的输出提供一个完全可复制的代码。好的,对不起,我编辑了这篇文章