The DataFramesMeta.jl package has one approach. Two new kids on the block:
jplyr.jl and Query.jl have different approaches for that type of function.

On Aug 26, 2016 1:38 PM, <[email protected]> wrote:

Hi,

I'm exited about Julia.  Coming from an R and SAS background I am trying to
develop some familiar tools to manipulate and query data.  So far here are
some of the things I have, but I just want feedback to see if there is a
better way.  The following code attempts to create a summarize() function
similar to that of dplyr in R.  But the call is a bit odd to look at (see
below).  Is there something I can do to avoid using :() or quotes?

# function definitions are below

using DataFrames

dat = DataFrame(x=rand(10), y=rand(10))
summary = summarize(dat, mu_x = :(mean(:x)), mu_y = :(mean(:y)));


# Function definitions manipulate expressions (Expr types) to
# access data frame elements

function df_statement(df, u::Expr)

  t = u
  arg_id = 1

  for ar in t.args
    if typeof(ar) == QuoteNode
      t.args[arg_id] = df[eval(ar)]
    elseif typeof(ar) == Expr
      df_statement(df, ar)
    end
    arg_id += 1
  end

  return eval(t)

end


function summarize(df; kwargs...)

  df_out = DataFrame()

  for (key, value) in kwargs
      df_out[Symbol(key)] = df_statement(df, value)
  end

  return df_out

end

Reply via email to