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