2017年12月19日現在、fitbitScraperは機能せず...三重大学特任教授・奥村先生のウェブサイトにも掲載されている(https://oku.edu.mie-u.ac.jp/~okumura/stat/fitbit.html)。
現在は下記サイトのようにAPIを使用する方法が主流
qiita.com
今回はウェアラブルデバイス業界で先端を走るfitbitのfitbit flexのデータをRのパッケージ'fitbitScraper'を使用して解析する。
まずはじめに必要になるパッケージを読み込む。
(インストールしてあることを前提とする。)
library(fitbitScraper) library(lattice) library(stringr)
次に個人のデータを取り込む。
#********は個人のアカウント情報を入力すること。 cookie <- login(email="********", password="********")
2015年8月から12月までのデータを取得して、リストに返す。
#2015年8月1日の1日の15分ごとの歩数のデータを取得する。 steps15<-get_intraday_data(cookie, what="steps", date="2015-08-01") list<-list(steps15) names(list)<-"2015-08-01" date<-as.Date("2015-08-02") while(date<=as.Date("2015-12-31")) { date<-as.character(date) steps15<-get_intraday_data(cookie, what="steps", date=date) list[date]<-list(steps15) date<-as.Date(date) date<-date+1 }
結果はこのように返ってくる。
list[1] ## $`2015-08-01` ## time steps ## 1 2015-08-01 00:00:00 0 ## 2 2015-08-01 00:15:00 0 ## 3 2015-08-01 00:30:00 0 ## 4 2015-08-01 00:45:00 0 ## 5 2015-08-01 01:00:00 0 ## 6 2015-08-01 01:15:00 0 ## 7 2015-08-01 01:30:00 0 ## 8 2015-08-01 01:45:00 0 ## 9 2015-08-01 02:00:00 0 ## 10 2015-08-01 02:15:00 0
先ほど取得した歩数のデータ(steps)のみのベクトル(v15)を作成する
v15<-list[[1]]$steps for(i in 2:length(list)) { v15<-c(v15, list[[i]]$steps) }
先ほど取得した日付および時刻のデータ(time)のみのベクトル(time15)を作成する
time15<-list[[1]]$time for(i in 2:length(list)) { time15<-c(time15, list[[i]]$time) }
timeとv15を結合し、df15を作成する。
df15<-data.frame(as.character(time15), v15) head(df15) ## as.character.time15. v15 ## 1 2015-08-01 00:00:00 0 ## 2 2015-08-01 00:15:00 0 ## 3 2015-08-01 00:30:00 0 ## 4 2015-08-01 00:45:00 0 ## 5 2015-08-01 01:00:00 0 ## 6 2015-08-01 01:15:00 0
今回の可視化には、日付・時刻・歩数の3つの列が必要になるので前述のデータセットの一列目を分割する必要がある。
ここで使用するのがstringrと言われるパッケージである。
dateList<-str_split(string=df15$as.character.time15., pattern=" ") head(dateList) ## [[1]] ## [1] "2015-08-01" "00:00:00" ## ## [[2]] ## [1] "2015-08-01" "00:15:00" ## ## [[3]] ## [1] "2015-08-01" "00:30:00" ## ## [[4]] ## [1] "2015-08-01" "00:45:00" ## ## [[5]] ## [1] "2015-08-01" "01:00:00" ## ## [[6]] ## [1] "2015-08-01" "01:15:00" dateMatrix<-as.data.frame(do.call("rbind", dateList)) df15<-cbind(dateMatrix, df15[,2]) colnames(df15)<-c("date", "time", "steps") #df15の列名を付け直す。
先ほどまでに加工したデータを用いて個人の歩数に関するグラフィックスをlattice(levelplot)にて描出する。
min = df15[,2] #時刻 day = df15[,1] #日付 steps = df15[,3] #歩数 levelplot(tapply(steps,list(min,day),sum) , col.regions=colorRampPalette(c("white","red")), xlab="15mins" , ylab="Date" ,main="Steps")
最終的に描出されるのは画像は下記の通りである。
縦軸は日付であり、下が2015年8月1日、上が2015年12月31日
横軸は左が0:00で右に進むほど時間が進んでいる。
<参考にしたサイト>
R package 'fitbitScraper'
https://cran.r-project.org/web/packages/fitbitScraper/fitbitScraper.pdf
以上。
20160116
RF