【发布时间】:2015-04-30 08:10:48
【问题描述】:
给定一个 DataFrame 和一个表达式,我希望能够使用这个表达式对 DataFrame 进行子集化。我还想收到索引向量,告诉我哪些行满足条件。我举个例子:
df = DataFrame(x1 = 1:3, x2 = [2, 1, 2],x3 = [22, 21, 20])
ex=:((x3 .< 22) & (x2 .== 2))
df1=df[(df[:x3].<22) & (df[:x2].==2),:]
idx=(df[:x2].==2) & (df[:x3].<22)
是否可以使用 Expression ex 获取 df1 和 idx?
我认为 DataFrames 的“with”功能曾经这样做过:idx=with(df,ex) 现在有https://github.com/JuliaStats/DataFramesMeta.jl,但是我找不到合适的功能。
谢谢
【问题讨论】:
-
根据这个讨论groups.google.com/forum/#!msg/julia-users/GU3Bxr0zM3g/… 方法
df[:((x3 .< 22) & (x2 .== 2)), :]应该工作(或在某些时候工作)此外,这里github.com/JuliaLang/julia-tutorial/blob/master/DataFrames/… 提到了一个子集函数。但它似乎不适用于我的安装,它既不返回我需要的索引向量 -
我用 DataFramesMeta 尝试了一些东西,但效果并不令我满意。最后一行产生错误。另外,我不知道如何获取与表达式匹配的行的索引向量。
exx=:((:x3.<22) & (:x2.==2)); out=@where(df,(:x3.<22) & (:x2.==2)); out2=@where(df,$(exx))$;
标签: expression dataframe subset julia