googleとwikipediaのトレンド(追記あり)

wikipediatrend , googletrend , xts パッケージ

「山本太郎」をキーワードにした。

色々試してみたけどgoogletrendからデータをダウンロードしてかつRに自動でうまく取り込む関数は見つからなかった。
結局、googletrend::gettrendでデータをダウンロードし、read.csv関数で取り込んだ。

googletrend

(注)コードを実行する前にgoogle trendにサインインしておく。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#require(devtools)
#install_github('googletrend','okugami79')
library(xts)
library(googletrend)
#ディレクトリの指定が必要
setwd("/home/user")
googletrend::setdownloaddir("/home/user")
googletrend::gettrend(keyword='山本太郎')
#setdownloaddir関数で指定したディレクトリに保存されない。
#ディレクトリファイル名は変更の必要があるかも。
#nrowsの数は適当に変更する。2015年8月は140
#report.csvを開いてclipboardを介して取り込む方がわかりやすい。
gtrend<-read.csv("/home/user/ダウンロード/report.csv",skip=4,nrows=140)
gtrend
gtrend.xts<-xts(gtrend[, 2], as.yearmon(gtrend[, 1]))
#plot.zoo(gtrend.xts["2013-01::",],type="h",lend=1,xlab="",ylab="",las=1,lwd=8,col="gray20")
#title("人気度の動向(google trends)")
wikipediatrend
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
library(xts)
library(wikipediatrend)
pv =
wp_trend(
page = c("山本太郎") ,
lang = "ja",
from = "2013-01-01"
)
## 内容確認
#pv
pv.xts<-xts(pv$count, as.Date(pv$date))
#月ごとに集計する(apply.monthly 関数)
pvm.xts<-apply.monthly(pv.xts,sum)["2013-01::",]
#縦軸を揃えるために as.yearmon
pvm<-xts(coredata(pvm.xts),as.yearmon(substr(index(pvm.xts),1,7)))
#plot.zoo(pvm,type="h",lend=1,xlab="",ylab="",las=1,lwd=8,col="gray20")
#title("Page Views(wikipedia)")

googletrendは8月(途中経過)までのデータ
wikipediatrendは7月までのデータ
データ数が違うので、縦軸が揃わない

gtrend.xtsの範囲を”2013-01::2015-07” として2015年8月の途中経過のデータを捨てるのはもったいないので
「wikipediatrendのデータに欠損値を1つ加える」ことにした。

1
2
(y <- xts(NA, as.yearmon("2015-08")) )
pvm<-rbind(pvm,y)

グラフ(2013ー01から2015ー08)

1
2
3
4
5
6
7
8
#png("goowiki01.png",width=1200,height=1000)
par(mfrow=c(2,1))
plot.zoo(gtrend.xts["2013-01::",],type="h",lend=1,xlab="",ylab="",las=1,lwd=8,col="gray20")
title("人気度の動向(google trends) キーワード:山本太郎 (注)2015-8のデータは途中経過")
plot.zoo(pvm["2013-01::",],type="h",lend=1,xlab="",ylab="",las=1,lwd=8,col="gray20")
title("Page Views(wikipedia) キーワード:山本太郎 (注)2015-8のデータは集計なし")
par(mfrow=c(1,1))
#dev.off()

グラフ(2014ー01から2015ー08)

1
2
3
4
5
6
7
8
#png("goowiki02.png",width=1200,height=1000)
par(mfrow=c(2,1))
plot.zoo(gtrend.xts["2014-01::",],type="h",lend=1,xlab="",ylab="",las=1,lwd=8,col="gray20")
title("人気度の動向(google trends) キーワード:山本太郎 (注)2015-8のデータは途中経過")
plot.zoo(pvm["2014-01::",],type="h",lend=1,xlab="",ylab="",las=1,lwd=8,col="gray20")
title("Page Views(wikipedia) キーワード:山本太郎 (注)2015-8のデータは集計なし")
par(mfrow=c(1,1))
#dev.off()

追記

もっと使いやすいコードを見つけた。

Scraping Google Trends with R

(手順)
Step 1: Install the Google Trends functions from my Github account.
Step 2: Sign in to Google Trends in your main browser
Step 3: define the keywords you need

(注)コードを実行する前にgoogle trendにサインインしておく。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#コードを取り込む(ダウンロードして読み込んだ方がよい)
library(devtools)
source_url("https://raw.githubusercontent.com/321k/Google-Trends/master/Google%20Trends%20functions")
library(xts)
#キーワードの指定
keywords=c("山本太郎")
url=URL_GT(keywords)
#downloadDirは環境に合わせて変更する
downloadDir="/home/user/ダウンロード"
#作業フォルダをdownloadDirと同じにする
setwd(downloadDir)
filePath=downloadGT(url, downloadDir)
#ダウンロードしたファイルを読み込んで
textLines=readLines(filePath)
#必要な行だけを取り込む。(「20**-」を含む行)
gtrend <- read.table(text=textLines[grep("^20..-", textLines)],header = FALSE, sep = ",", strip.white = TRUE,
stringsAsFactors = FALSE,row.names = NULL, col.names = c("date", "score"))
#集計が月単位、週単位のどちらなのか一列目の長さで判断
ifelse(nchar(gtrend[1,1])>8,
gtrend.xts<-xts(gtrend[,2],as.Date(substr(gtrend[,1],1,10))),
gtrend.xts<-xts(gtrend[, 2], as.yearmon(gtrend[, 1])))
#type="h"としている。折れ線グラフなら"l"に直す。
plot.zoo(gtrend.xts["2014-01::",],type="h",lend=1,xlab="",ylab="",las=1,lwd=8,col="gray20")
title(paste0("人気度の動向(google trends) キーワード:",keywords))

グラフは省略