Имя столбца как переменная в макросах DataFramesMeta - PullRequest
1 голос
/ 16 апреля 2019

Я использую макросы из DataFramesMeta.jl , и я хотел бы, чтобы имя столбца хранилось в переменной.Вот мои входные данные:

using DataFrames
using DataFramesMeta
using Statistics

df = DataFrame(g = ["a", "a", "b", "b"], x = 1:4)
gdf = groupby(df, :g)

colname = :x

Если я использую colname в @select, это вроде работает, за исключением того, что возвращает фрейм вместо фрейма данных:

julia> @select(df, :x)
4×1 DataFrame
│ Row │ x     │
│     │ Int64 │
├─────┼───────┤
│ 1   │ 1     │
│ 2   │ 2     │
│ 3   │ 3     │
│ 4   │ 4     │

julia> @select(df, colname)
4-element Array{Int64,1}:
 1
 2
 3
 4

Если я пытаюсь использовать colname в @where или @group_by, они выдают ошибки метода:

julia> @where(df, :x .> 2)
2×2 DataFrame
│ Row │ g      │ x     │
│     │ String │ Int64 │
├─────┼────────┼───────┤
│ 1   │ b      │ 3     │
│ 2   │ b      │ 4     │

julia> @where(df, colname .> 2)
ERROR: MethodError: no method matching isless(::Int64, ::Symbol)
julia> @based_on(gdf, xavg = mean(:x))
2×2 DataFrame
│ Row │ g      │ xavg    │
│     │ String │ Float64 │
├─────┼────────┼─────────┤
│ 1   │ a      │ 1.5     │
│ 2   │ b      │ 3.5     │

julia> @based_on(gdf, xavg = mean(colname))
ERROR: MethodError: no method matching iterate(::Symbol)

Есть ли способ передать имя столбца в качестве переменной в DataFramesMeta.jl макросы?

1 Ответ

1 голос
/ 16 апреля 2019

Попробуйте

@where(df, cols(colname) .> 2)

прямо из верхней части документа: https://github.com/JuliaData/DataFramesMeta.jl#with.

...