Julia程序设计语言中基于条件的列选择
我对Julia比较陌生-我想知道如何根据条件选择DataFrames.jl中的一些列,例如,平均值大于0的所有列。根据按列条件选择列的一种方法是使用将该条件映射到列上,然后使用生成的Bool数组作为DataFrame上的列选择器:Julia程序设计语言中基于条件的列选择,julia,Julia,我对Julia比较陌生-我想知道如何根据条件选择DataFrames.jl中的一些列,例如,平均值大于0的所有列。根据按列条件选择列的一种方法是使用将该条件映射到列上,然后使用生成的Bool数组作为DataFrame上的列选择器: julia> using DataFrames, Statistics julia> df = DataFrame(a=randn(10), b=randn(10) .- 1, c=randn(10) .+ 1, d=randn(10)) 10×4 Da
julia> using DataFrames, Statistics
julia> df = DataFrame(a=randn(10), b=randn(10) .- 1, c=randn(10) .+ 1, d=randn(10))
10×4 DataFrame
Row │ a b c d
│ Float64 Float64 Float64 Float64
─────┼────────────────────────────────────────────────
1 │ -1.05612 -2.01901 1.99614 -2.08048
2 │ -0.37359 0.00750529 2.11529 1.93699
3 │ -1.15199 -0.812506 -0.721653 -0.286076
4 │ 0.992366 -2.05898 0.474682 -0.210283
5 │ 0.206846 -0.922274 1.87723 -0.403679
6 │ -1.01923 -1.4401 -0.0769749 0.0557395
7 │ 1.99409 -0.463743 1.83163 -0.585677
8 │ 2.21445 0.658119 2.33056 -1.01474
9 │ 0.918917 -0.371214 1.76301 -0.234561
10 │ -0.839345 -1.09017 1.38716 -2.82545
julia> f(x) = mean(x) > 0
f (generic function with 1 method)
julia> df[:, map(f, eachcol(df))]
10×2 DataFrame
Row │ a c
│ Float64 Float64
─────┼───────────────────────
1 │ -1.05612 1.99614
2 │ -0.37359 2.11529
3 │ -1.15199 -0.721653
4 │ 0.992366 0.474682
5 │ 0.206846 1.87723
6 │ -1.01923 -0.0769749
7 │ 1.99409 1.83163
8 │ 2.21445 2.33056
9 │ 0.918917 1.76301
10 │ -0.839345 1.38716
或者更短:df[:,(x->mean(x)>0)。(eachcol(df))]
或者如果您不想复制数据df[!,(x->mean(x)>0)。(eachcol(df))]