疫学と医療統計学と遺伝学と時々、大学院生活

疫学を専門とする大学院生の研究に関する備忘録的ページ。

R package 'fitbitScraper'を使用したVisualization

今回はウェアラブルデバイス業界で先端を走る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で右に進むほど時間が進んでいる。
f:id:ryosukefujii0320:20160116230155p:plain

<参考にしたサイト>
R package 'fitbitScraper'
https://cran.r-project.org/web/packages/fitbitScraper/fitbitScraper.pdf


以上。


20160116
RF