投稿

7月, 2016の投稿を表示しています

Julia の aggregate 関数で 「群ごとの平均値を求める」 または、「ダブりのある測定値を平均値で代表させる」

Julia の aggregate 関数を使うと、「群ごとの平均値を求める」 または、「ダブりのある測定値を平均値で代表させる」 などが、簡単にできます。後者は、R でいう場合の 「 重複した 'row.names' は許されません 」 などというエラーへの対応として aggregate を使える可能性があるという意味でもあります。 おなじみの iris を例にとりましょう。iris の Species すなわち setosa, versicolor, virginica の3種について、それぞれの4測定値 Sepal.Length, Sepal.Width ,Petal.Length, Petal.Width の平均を求めます。 aggregate(iris, : Species, mean) であります。R の場合よりも書式が少しシンプルです。 SD は std で良いようです。 using RDatasets iris = dataset("datasets", "iris") aggregate(iris, :Species, [mean, std]) これで、下記のように結果が出ます。(ズレていたら、ごめんなさい) 3×9 DataFrames.DataFrame │ Row │ Species │ SepalLength_mean │ SepalLength_std │ SepalWidth_mean │ SepalWidth_std │ PetalLength_mean │ PetalLength_std │ PetalWidth_mean │ PetalWidth_std │ ├─────┼──────────────┼──────────────────┼─────────────────┼─────────────────┼────────────────┼──────────────────┼─────────────────┼─────────────────┼────────────────┤ │ 1 │ "setosa" │ 5.006 │ 0.35249 │ 3.428 ...

Julia のアンインストール (Julia がうまく動かない時)

Julia のアンインストールは、 アプリケーション フォルダーのアイコンをゴミ箱に入れること ~/.julia を捨てること 以上の2つ。 ~/.julia を捨てるには、 rm -rf ~/.julia Pkg.add のサンプル Pkg.add("StatsBase") Pkg.add("Stats") Pkg.add("Distributions") Pkg.add("DataFrames") Pkg.add("RDatasets") Pkg.add("GLM") Pkg.add("HypothesisTests") Pkg.add("Gadfly") Pkg.add("Cairo") Pkg.add("PyPlot") Pkg.add("RCall") どうやら、マイナー バージョンを上げるだけでも、クリーンインストールの方が良いようです?! 入れ直したら PyPlot が動くようになりました。 立ち上がらない場合は、~/.juliarc.jl にご注意の程。パッケージが無いはずです。コメントアウトなどで対処して下さい。

Julia の Gadfly で、Beeswarm plot のグラフオプション設定

イメージ
なぜか、Julia を 0.4.6 にしたら、PyPlot が働かなくなりました。 仕方が無いので、お手紙を書くかわりに、Gadfly を試すことにしました。 ところが、情報があまりに乏しいのです。 なんとか、いくつかのパラメーターを設定したので、備忘録かわりに記載することにしました。これに layer を覚えたら、かなり色々描けるはず。 デフォルト using Gadfly using RDatasets myplot= plot(dataset("lattice", "singer"), x="VoicePart", y="Height", Geom.beeswarm ) draw(PDF("myplot.pdf", 5inch, 3inch), myplot) いくつかのパラメーター変更 myplot= plot(dataset("lattice", "singer"), x="VoicePart", y="Height", Geom.beeswarm, Theme( default_color=colorant"black",grid_color=colorant"gray", grid_line_width=0mm, default_point_size=0.5mm, panel_stroke=color("black") ), Guide.yticks(ticks=collect(0:20:100)) ) draw(PDF("myplot_opt.pdf", 5inch, 3inch), myplot) Guide.yticks(ticks=collect(0:20:100)) は、偶然できましたが Theme の外に出すものらしいです。ペーストの位置を、偶然まちがえなかったら、あきらめるところでした。 PD...

julia で CSV ファイルを編集

julia もversion 1 が出て仕様の変更が少なくなりました。それでも慣れた R や Pythone と比べると、いまひとつという印象の方もいらっしゃるでしょう。 さて、この Julia は、CUI で CVS ファイルを編集するのに、実はとても向いています。住所録、顧客情報のような CSV の編集に、用途によってはとても向いています。たとえば、Unix のファイル、ディレクトリー、 ユーザー管理のような気分で、CSV 編集をしたい場合には、選択肢になるかもしれません。 仮に、 R で因子 (表計算ソフトで言うところのセルの値) を上書きをしようとすると level などの様々な因子が障害になってしまします。連結も、特に下方向に連結時は、単なる行と列の大きさのみでは語れないことがあります。 良くも悪くも、Julia は、素直に上書きしてくれます。もともと R を使っていましたので、DataFrames パッケージを使うのが好みです。 julia は日本語の文字列も、予想以上に上手に扱います。ただし、エンコードは、UTF-8 にしないといけません。 julia では、DataFrames は、カンマ区切り、つまり、CSV ファイルをオプションなしの CSV.read()、CSV.write() で扱え、CSV形式との親和性の良さを感じます。 列方向や行方向の追加も、とても簡単です。連結可能な大きさと要素のベクトルまたはデータフレーム a と b について、[a b] で a の左に、[a;b] で、a の下に b をたしてくれます。 hcat(a,b), vcat(a,b) の方が実行速度は速いです。ただし、下に足す場合は、上の DataFrame の属性に合せる必要があります。具体的には、文字列か、数値か (Int, Float) の程度の区別は必要になります。事前に、表の設計が、しっかりと決っている場合は、ありま問題にならないと思います。なお、missing (NA) については、タテ方向の結合 vcat() 時に問題になることがあります。それでも、なんだか、とても自由に表を結合、分割し、編集できる印象です。 日付は、"yyyy-mm-dd" で入力しておくと、Date("yyyy-mm-dd") で日...