直にデータフレームを操作するより楽なのかな?
using Query
using RDatasets
mtcars = dataset("datasets", "mtcars");
names(mtcars)
@collect で,条件に合ったものをデータフレームとして返す。
q1 = @from i in mtcars begin
@where i.AM == 1
@select {i.Model, i.Cyl, i.MPG, i.WT}
@collect DataFrame
end
普通のデータフレームになる。
using Statistics
cor(q1[!, 3], q1[!, 4])
cor(Matrix(q1[:, 2:4]))
3×3 Array{Float64,2}:
1.0 -0.825998 0.847024
-0.825998 1.0 -0.908915
0.847024 -0.908915 1.0
@collect しなければ,イテレータを返す。
q2 = @from i in mtcars begin
@where i.AM == 1
@select {i.Model, i.WT}
end
イテレータは for や 内包表記で使える。
for i in q2
println("$(i.Model): weight is $(i.WT)")
end
[i.Model for i in q2 if i.WT > 2.5]
※コメント投稿者のブログIDはブログ作成者のみに通知されます