投稿

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

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

Julia でもありますが、R の aggregate 関数を使うと、「群ごとの平均値を求める」 または、「ダブりのある測定値を平均値で代表させる」 などが、簡単にできます。後者は、「 重複した 'row.names' は許されません 」 などというエラーへの対応として aggregate を使える可能性があるという意味でもあります。 おなじみの iris を例にとりましょう。iris の Species すなわち setosa, versicolor, virginica の3種について、それぞれの4測定値 Sepal.Length, Sepal.Width ,Petal.Length, Petal.Width の平均を求めます。 これは、考え方を変えると、複数回測定したダブりのあるデータを、平均値で代表させる方法として、利用することも可能です。ちなみに iris では、50 回の反復測定がされています。 なかなか、面倒に思えますが、R の aggregate 関数を使うとすぐです。すなわち aggregate(iris[,1:4],by=list(iris[,5]),FUN=mean) で、以下のような結果がでます。 Group.1 Sepal.Length Sepal.Width Petal.Length Petal.Width 1 setosa 5.006 3.428 1.462 0.246 2 versicolor 5.936 2.770 4.260 1.326 3 virginica 6.588 2.974 5.552 2.026 別法としては、1つずつ sapply(split(iris[,1],iris[,5]), mean) としていけば求まります。 aggregate 関数の FUN を、median, sd などとしても、機能します。 実は、data.frame を、ベクトル化したい時、例えば、クラスタリングやヒートマップなどを作製したい時に、aggregate 関数を使うと便利です。mean などが代表値として妥当かを考...

R の stripchart の発展形 beeswarm plot とboxplot とカーネル密度推定

イメージ
観測点をグループ毎に示す場合の R を使ったグラフのお話しです。 stripchart では、ズラしの指定をすると中心が合わなくなります。 これを悲しんでいた人は、 beeswarm パッケージの plot を使いましょう。 seaborn の Gallery にある Horizontal boxplot with observations のような図を描きます。 R で beeswarm plot 描いている日本語例が少ないように思いますので、今回は特例で、画像とオプションの設定例を付けてあります。 不勉強なためか、Prism や SPSS あたりをもってこないといけないといけないかと思い込んでいました。反省です。 さて、まずは、インストールしていない人はインストールしましょう。 install.packages("beeswarm", dependencies = TRUE) R に初めから入っている iris データセットを例にとります。iris の内容の説明は、 irisの正体 に詳しくあります。まずは、読み込みましょう。 data(iris) 次に、普通の boxplot から描きます (今回は、boxplot でも plot でも同じ図が出るはずです)。 boxplot(data=iris, Sepal.Length~Species, boxwex=0.3, border="gray20",col="gray80", ylim=c(0,8)) 原点が入るように、y軸を設定しています。 次に、beeswarm plot を描いてみましょう。 library(beeswarm) beeswarm(data=iris, Sepal.Length~Species, cex=1, spacing=1, ylim=c(0,8)) これは下記の初めの図となります。 次に、これに、boxplot を重ねてみましょう。 boxplot(data=iris, Sepal.Length~Species, boxwex=0.3, border="gray20",col="gray80", ylim=c(0,8)) beeswa...

R で、好みの色のグラデーションでヒートマップが描きたい。

heatmap または、heatmap2 関数内で、 col = colorRampPalette(c("blue3", "white", "red3")) などとすればよろしいようです。"blue3" などを好きな色に変えるもよろしいでしょう。 この方法だと、中間部分の色指定が可能です。下記は4色での指定の例です。データのファイル名は、わざと 「ホゲ」 と記載しています。 library(gplots) Colour heatmap.2(as.matrix(ホゲ), dendrogram = "none", Colv=F, Rowv=FALSE, scale="none", key = F, density.info="none", col=Colour, main="Cosine-Average", margin=c(8,10), trace = "none" ) などとされたら、黒 - 深紫 - 桃色 - 肌色 - 白 というようなグラデーションで、データ 「ホゲ」 のヒートマップが描けるでしょう。 ここで、"key = F" としているのは、"key" が、相当に重い描画をするからです。"key" を表示させたい場合は、"key = F" とするのも良いでしょう。 もし、重くなるのを、さけたい時は、別に key を作ってしまいましょう。 plot(NULL, xlim=c(0,32), ylim=c(0,1), axes=FALSE, xlab="", ylab="") rect(0:31, 0, 1:32, 1, col=Colour(32), border=NA) としたら、32段階で、先程、指定したグラデーションを表示してくれます。 これを PDF で保存して、後から貼る方が、扱いやすいこともあるでしょう。 4色の色見本のみを、表示したい時は、下記です。...

MacVim のコマンドラインからの起動し、新規ファイルを作るのこと

"mvim" コマンドをインストールするのが正攻法でしょう。 http://repo.or.cz/w/MacVim/KaoriYa.git?a=blob;f=src/MacVim/mvim;hb=HEAD にあるテキストファイルを、 /usr/local/bin/mvim として保存します ("mvim" がファイル名です)。 そして、コマンドラインに、 sudo chmod +x /usr/local/bin/mvim と、入力すれば設定終了です。 敷居が高い場合には、アイリアスで、MacVim をコマンドラインから起動する方法があります。 実は、2種類あるようです。MacVim の場合は、 /Applications/MacVim.app/Contents/MacOS/Vim -g で、いわゆる gvim が立ち上がるので、こちらをエイリアス登録する方が、使い勝手が良いでしょう。 alias macvim="/Applications/MacVim.app/Contents/MacOS/Vim -g" と、".profile" 等に書くと、"macvim" とコマンドラインに入力すると、MacVim が立ち上がります。 別法として、他のアプリケーションと同じく open -a MacVim とすれば問題無く起動します。 しかし、この方法では問題が生ずることがあります。 それは、存在しないファイル名を続けても、新規ファイルを製作してくれないことです。 コマンドラインに、 open -a MacVim.app newfile と入力し、 Vim を起動し、新規ファイル名を作製しようとすると The file /Users/tomich/hoge does not exist. と、エラーが出てしまします。 特に "." で始まる設定用のファイルを作製したい時に困ります。 しばしば、"." で始まる設定用のファイルを作製され、MacVim を良くお使いになる方は、はじめに書いた方で、エイリアス登録するのが良いでしょう。 無論、"open -a ..." でエ...

Julia のパッケージを職場からインストールできない時の対処方法

職場の LAN 経由などで、Julia のパッケージを入れたい時には、プロキシ(Proxy) の設定が必要なことがあります。 ソースからのインストール時の説明 https://github.com/JuliaLang/julia にあるところの (If you are behind a firewall, you may need to use the https protocol instead of the git protocol: に相当する方は、コンソールに下記を入力しましょう。 git config --global url."https://".insteadOf git:// これだけで、パッケージのインストール等の問題が解決することがあります。 Windows をお使いの方は、どうやら、Julia 自身のフォルダーに Git 窓があるようです。ここに、上記を入れると解決する可能性があります。

R と julia で、文字属性の数字を数字属性の数字に変換する方法 (おまけでその逆)

"123" を Float64 に変換します。 R の場合。 as.numeric(as.character("123")) です。 julia だと、 parse(Float64,"123") と、すると良いようです。 逆に、数字を文字にする場合、R は、 as.charactor() で、julia は、 julia> string(123) "123" です。

FlowJo の絵を、Illustrator で、ほどほどのベクトルアートとして扱う方法

FlowJo 側のバージョンにより、多少の差異があるかもしれません。 しかしながら、恐らく、PDF として印刷して、 オブジェクト -> クリッピングマスク ー> 解除 これで、多くの人が幸せになれるはずです。 数字は、フォントとして扱えるはずです。 ただし、軸の目盛線まで、バラバラになるので、適度に再グループ化をお薦めします。

Julia で、複数の条件にあうデータフレーム中の行を取りだす方法

df というデータフレームまたは、ベクトルの中の colA という列と、colB という列で、 それぞれ、facterA, facterB を含む行を取り出す方法です。 それぞれの条件式を collect() 内に入れて、ベクトル を作り、& または | で継ぎます。 df[ collect(df[:colA].=="facterA") & collect(df[:colB].=="facterB") , :] collect で、くくるというのが、なかなか書いて無いように思いますが、常識なのでしょうか。 ひとまずは、これで動くはずです。 なお、 [ ] でくくる方法でも動きますが、collect( ) が推奨のようです。