Hatena::ブログ(Diary)

mizchi log

@mizchiの雑記帳

2011-04-16

R で Mongo で データフレーム


実験で取扱うデータをMongoDBに統一しているのだけど、RMongoは結構ライフチェンジングだった
っていうのは今までPythonでmongodb叩いてcsvに加工してRで読んでたから。
MongoDBでも面倒な手間なくRと連携できるのは、データマイナーな皆さんには結構楽しいのではないでしょうか

RMongoは、MongoDBのBSONクエリの結果をデータフレームで返してくれる

RMongoのインストール


まず RUnitとRjavaをCRANからインストール。

次に quid/RMongo - GitHub の Download から tar.gz で落としてくる

シェルで

$ R CMD INSTALL RMongo_x.x.x.tar.gz  #version

使ってみる


適当に関数書いてラップしといた

library(RMongo)

getMongo<- function(dbname,colname,query) {
  db <- mongoDbConnect(dbname, "localhost", 27017)
  output <- dbGetQuery(db, colname ,query)
  dbDisconnect(db)
  return(output)
}

insertMongo<- function(dbname,colname,query) {
  db <- mongoDbConnect(dbname, "localhost", 27017)
  output <- dbInsertDocument(db, colname, query)
  dbDisconnect(db)
  return(output)
}


以下Kinectで撮ったデータを三次元プロットしてみたサンプル

> output <- getMongo("openni",'test1','{"pos":"HEAD"}') { 
> output
                         X_id  pos       time   y    x    z con
1    4d883fe7fd0cc62ee900004b HEAD 1300774887 739 -236 2280   1
2    4d883fe7fd0cc62ee900005a HEAD 1300774887 740 -238 2280   1
3    4d883fe7fd0cc62ee9000069 HEAD 1300774888 741 -239 2280   1
4    4d883fe7fd0cc62ee9000078 HEAD 1300774888 745 -240 2279   1
5    4d883fe7fd0cc62ee9000087 HEAD 1300774888 748 -240 2280   1
6    4d883fe7fd0cc62ee9000096 HEAD 1300774888 752 -241 2279   1
...

> library(scatterplot3d) # CRANから
> scatterplot3d(output$x , output$y , output$z)

f:id:mizchi:20110416182503p:image


データフレームってのが嬉しいですね!

追記


RStudioが凄いので皆さん是非使いましょう
RStudio
f:id:mizchi:20110416182500j:image


Mac版のキーバインドがおかしいのどこに報告したらいいのかな

2009-04-24

テニスしたりwordpressのphpの解読したり


軽い運動

久しぶりに大学で運動した。テニサーでラケット借りて硬式テニスなど。
大学内に
軟式経験者だからぶっ飛ばしてしまうようだ。バックハンドのフォームも違う。軟式みたいにボールをラケットでこすっても回転かからないし前に飛ばない。
フォームが悪いせいで肩を痛めかけてる。痛い。

phpなど嗜む


授業中、特に聞く内容もなかった為、ひたすらwordpressのphp読んでいた。自前で拡張するために、とにかくtry&error。どの関数が何を呼んでいるのか、イマイチ掴めない。
結局個別のエントリでもget_header();やget_sidebar();でモジュールを呼び出してるのかな。sidebar.phpでは自分の居場所ごとにifで分岐させて画面遷移を実現しているらしい。
ここらへんの書き方はテーマごとに全然違うんだろうけど、defaultテーマのキューブリック読む限りはこうなってる。


開発環境は xampp(localhost:8080) + wordpress 2.7 + Firebug(debug) + Carbon Emacs(編集)
phpを試すときはいつもこうです


原因がわからない問題が一つ。emacscss-modeで、カンマの次に改行(RET)押すと確実にフリーズする。ググったところ似た症例の人がいるのだけど、解決策が見つからない。どうすんべ。
現状、CSSに関してはSmulton2を使って編集している。操作がEmacsライクで違和感はないが、できたら開発環境はemacsに統合したいんだよなー。


サークルのHPを任されているため、とにかく五月までに形になるものを提出したい。まだ時間があるので、とにかく焦らずじっくり解読しよう。
デザイナーが作った草案があって、実現するのにそんなに難しいことをする必要はないと思うのだけど、wordpressそのものを弄れるようになっておいても損はないはずだ。
あとこのブログのヘッダ周りのCSSも修正したいのです。なんか寂しい。

ゼミ

正確にはゼミじゃないのだけど、ゼミのような形態の授業があって、テキストマイニングの初歩のようなことをやることになった。
今週中に定形文からxmlを生成する簡単なライブラリを作ると宣言してしまったので、土日にやるか。
たぶんjavaを使うことになる。グループワークなので最小公約的にjavaになったけど、できればpython使いたかった。あ、そういやjythonなんて言語もあったっけ。
集団開発なんてやったことないし、ノウハウもないんだ...


テキストマイニングについて、一冊本買っとかないとな。
「Rによるテキストマイニング」が前から気になっていたので欲しい。Javaじゃない。

Rを少し触って


分散分析(ANOVA)させた。
手元の本を読みながらなので、正直あんまり意味がわかってないです。これから調べる。
とりあえず授業で出した値と同一になったので満足してしまった。

> a1<-c(77.4,78.2,78.1,77.8,77.9)
> a2<-c(78.3,78.2,78.4,77.3,79.1)
> a3<-c(79.2,79.3,79.1,78.2,79.3)
> a4<-c(78.9,78.8,78.1,78.1,78.9)
> bunsan1<-data.frame(A=factor(c(rep("a1",5),rep("a2",5),rep("a3",5),rep("a4",5))),y=c(a1,a2,a3,a4))
> bunsan1
A y
1 a1 77.4
2 a1 78.2
3 a1 78.1
4 a1 77.8
5 a1 77.9
6 a2 78.3
7 a2 78.2
8 a2 78.4
9 a2 77.3
10 a2 79.1
11 a3 79.2
12 a3 79.3
13 a3 79.1
14 a3 78.2
15 a3 79.3
16 a4 78.9
17 a4 78.8
18 a4 78.1
19 a4 78.1
20 a4 78.9
> boxplot(y~A,data=bunsan1,col="lightblue")> summary(aov(y~A,data=bunsan1))
> summary(aov(bunsan1))
Df Sum Sq Mean Sq F value Pr(>F)
A 3 3.4820 1.1607 5.13 0.01124 *
Residuals 16 3.6200 0.2263
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1