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