データサイエ「ソ」ティストは語る

データサイエンティストではない、パチもんのデータサイエ「ソ」ティストのブログ

RでTin Can APIなJSONをごにょごにょ

なんかそういう機会があったので。完全にコードのみ。後半は、やりたいことはできたけど、なんだかごちゃごちゃ。

# rjsonパッケージのインストール(初回のみ)
# install.packages("rjson")

# JSONデータを扱うためのrjsonパッケージのロード
require(rjson)

# JSONデータを読み込み、data_json変数に格納(リスト形式)
data<-fromJSON(file="test.json")

# リスト形式は扱い辛いので、ベクトルに変換
json<-unlist(data)

# 要素名を確認
names(json)

### 集計
# ユーザー名をカウント
table(json[names(json)=="actor.name"])

# カウント結果を棒グラフで描画
#pdf(file="users_graph.pdf",width=16,height=9,family="Japan1GothicBBB") # PDFで出力したい場合はコメントを外す
#par(mar=c(5,5,5,2),cex.main=2,cex.lab=2,cex.axis=1.5) # PDFで出力したい場合はコメントを外す
barplot(table(json[names(json)=="actor.name"]),main="ユーザー名の集計結果",xlab="ユーザー名",ylab="アクセス数",cex.name=1.3)
#dev.off() # PDFで出力したい場合はコメントを外す

# 閲覧したページをカウント
# ただしURLが長すぎてわかり辛い
table(json[names(json)=="object.id"])

# カウント結果を棒グラフで描画
# ただしURLが長すぎてわかり辛い
#pdf(file="objectid_graph.pdf",width=16,height=9,family="Japan1GothicBBB") # PDFで出力したい場合はコメントを外す
#par(mar=c(5,5,5,2),cex.main=2,cex.lab=2,cex.axis=1.5) # PDFで出力したい場合はコメントを外す
barplot(table(json[names(json)=="object.id"]),main="object:idの集計結果",xlab="URL",ylab="アクセス数",cex.name=1.3)
#dev.off() # PDFで出力したい場合はコメントを外す

### アクセス履歴の分析
# timestampを時系列データに変換
x<-gsub("T"," ",json[names(json)=="timestamp"])
x<-substr(x,1,19)
x<-strptime(x,"%Y-%m-%d %H:%M:%S",tz="") 

# データを時間単位に丸める
x<-as.POSIXct(round(x,"hours"))

range_x<-range(x)
y<-seq(range_x[1],range_x[2]+7200,"6 hours")

# 時間帯別のアクセス数を棒グラフで描画
#pdf(file="access_time_graph.pdf",width=16,height=9,family="Japan1GothicBBB") # PDFで出力したい場合はコメントを外す
#par(mar=c(5,5,5,2),cex.main=2,cex.lab=2,cex.axis=1.5) # PDFで出力したい場合はコメントを外す
hist(x,breaks=y,freq=T,ylim=c(0,100),main="時間帯別のカウント結果",xlab="時間",ylab="アクセス数",xaxt="n")
y<-strftime(y,format="%m/%d\n%H:%M")
axis.POSIXct(1,at=seq(range_x[1],range_x[2], by="6 hours"), format="%m/%d\n%H:%M",mgp=c(3,2,0),cex.axis=0.8)
#dev.off() # PDFで出力したい場合はコメントを外す