読者です 読者をやめる 読者になる 読者になる

からあげ定食

僻地の大学生の進捗発表。R,Python,yacht,twitteR,自然言語処理,将棋,機械学習,ヨット

【R】質的データから円グラフを作る

 [565] "autotweety.net"                           "twittbot.net"                            
 [567] "Janetter Pro for iPhone"                  "Osfoora for iOS"                         
 [569] "twittbot.net"                             "Twitter for Android"                     
 [571] "Twitter for iPhone"                       "Twitter for iPhone"                      
 [573] "Twitter for iPhone"                       "Twitter for iPhone"                      
 [575] "Facebook"                                 "Twitter for Android" 

このような、同じものが何回も出てくるデータの割合を円グラフにして表したいということはよくあると思います。
今回は、Twitterのデータから、ツイートをつぶやいたアカウントの割合を円グラフで表します。

# ツイートを取得
tweet <- searchTwitter("スターバックス",1000)
# ツイートをデータフレームに		
tw <- twListToDF(tweet)
# つぶやいたクライアントをURL表示からクライアント名に変換	
tw[,"statusSource"] <- substr(tw[,"statusSource"],
    regexpr(">",tw[,"statusSource"])+1,
    nchar(tw[,"statusSource"])-4)

# ツイートのクライアントの頻度表を作成
source <- data.frame(table(tw$statusSource)) 
# 度数分布表を度数の多い順に並べる
source.order <- source[order(source$Freq,decreasing=T),]
# 度数分布表を相対度数分布表に
source.pie <- source.order[,2]/sum(source.order[,2])
# 名前をつける
names(source.pie) <- source.order[,1]
# 円グラフを表示
pie(source.pie)

f:id:fujit33:20150406173250p:plain]
頻度が1しか無いものが多くてごっちゃごちゃになっていますので、頻度の少ないものをその他にまとめたいですが……すみませんまた今度やります。
こう見ると、iPhoneAndroidなどでつぶやいている人は以外に少ないように思います。残りは非公式クライアントもありますが、ほとんどがBotです。

ちなみに、同じことをキーワード「大相撲」に変えてやってみました。(スタバの対極を考えて浮かんだものが大相撲だった)
f:id:fujit33:20150406175827p:plain
こちらは、iPhoneAndroidからのつぶやきの割合が大きいことが分かります。おそらく、スタバ関連のBotは多く、大相撲関連のBotは少ないからでしょう。