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)
データフレームってのが嬉しいですね!