新聞中心
?[[200501]]?

作為一家“創(chuàng)意+整合+營(yíng)銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們?cè)跇I(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、創(chuàng)意表現(xiàn)、網(wǎng)頁(yè)制作、系統(tǒng)開(kāi)發(fā)以及后續(xù)網(wǎng)站營(yíng)銷運(yùn)營(yíng)等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營(yíng)模式與有效的網(wǎng)絡(luò)營(yíng)銷方法,創(chuàng)造更大的價(jià)值。
學(xué)習(xí)使用 R 的 twitteR 和 leaflet 包, 你就可以把任何話題的推文定位畫(huà)在地圖上。
當(dāng)我開(kāi)始學(xué)習(xí) R ,我也需要學(xué)習(xí)如何出于研究的目的地收集推特?cái)?shù)據(jù)并對(duì)其進(jìn)行映射。盡管網(wǎng)上關(guān)于這個(gè)話題的信息很多,但我發(fā)覺(jué)難以理解什么與收集并映射推特?cái)?shù)據(jù)相關(guān)。我不僅是個(gè) R 新手,而且對(duì)各種教程中技術(shù)名詞不熟悉。但盡管困難重重,我成功了!在這個(gè)教程里,我將以一種新手程序員都能看懂的方式來(lái)攻略如何收集推特?cái)?shù)據(jù)并將至展現(xiàn)在地圖中。
創(chuàng)建應(yīng)用程序
如果你沒(méi)有推特帳號(hào),首先你需要 注冊(cè)一個(gè)。然后,到 apps.twitter.com 創(chuàng)建一個(gè)允許你收集推特?cái)?shù)據(jù)的應(yīng)用程序。別擔(dān)心,創(chuàng)建應(yīng)用程序極其簡(jiǎn)單。你創(chuàng)建的應(yīng)用程序會(huì)與推特應(yīng)用程序接口(API)相連。 想象 API 是一個(gè)多功能電子個(gè)人助手。你可以使用 API 讓其它程序幫你做事。這樣一來(lái),你可以接入推特 API 令其收集數(shù)據(jù)。只需確保不要請(qǐng)求太多,因?yàn)橥铺財(cái)?shù)據(jù)請(qǐng)求次數(shù)是有限制 的。
收集推文有兩個(gè)可用的 API 。你若想做一次性的推文收集,那么使用 REST API. 若是想在特定時(shí)間內(nèi)持續(xù)收集,可以用 streaming API。教程中我主要使用 REST API。
創(chuàng)建應(yīng)用程序之后,前往 Keys and Access Tokens 標(biāo)簽。你需要 Consumer Key (API key)、 Consumer Secret (API secret)、 Access Token 和 Access Token Secret 才能在 R 中訪問(wèn)你的應(yīng)用程序。
收集推特?cái)?shù)據(jù)
下一步是打開(kāi) R 準(zhǔn)備寫(xiě)代碼。對(duì)于初學(xué)者,我推薦使用 RStudio,這是 R 的集成開(kāi)發(fā)環(huán)境 (IDE) 。我發(fā)現(xiàn) RStudio 在解決問(wèn)題和測(cè)試代碼時(shí)很實(shí)用。 R 有訪問(wèn)該 REST API 的包叫 twitteR。
打開(kāi) RStudio 并新建 RScript。做好這些之后,你需要安裝和加載 twitteR 包:
install.packages("twitteR")
#安裝 TwitteR
library (twitteR)
#載入 TwitteR安裝并載入 twitteR 包之后,你得輸入上文提及的應(yīng)用程序的 API 信息:
api_key <- ""
#在引號(hào)內(nèi)放入你的 API key
api_secret <- ""
#在引號(hào)內(nèi)放入你的 API secret token
token <- ""
#在引號(hào)內(nèi)放入你的 token
token_secret <- ""
#在引號(hào)內(nèi)放入你的 token secret
接下來(lái),連接推特訪問(wèn) API:
setup_twitter_oauth(api_key, api_secret, token, token_secret)
我們來(lái)試試讓推特搜索有關(guān)社區(qū)花園和農(nóng)夫市場(chǎng):
tweets <- searchTwitter("community garden OR #communitygarden OR farmers market OR #farmersmarket", n = 200, lang = "en")這個(gè)代碼意思是搜索前 200 篇 (n = 200) 英文 (lang = "en") 的推文, 包括關(guān)鍵詞 community garden 或 farmers market 或任何提及這些關(guān)鍵詞的話題標(biāo)簽。
推特搜索完成之后,在數(shù)據(jù)框中保存你的結(jié)果:
tweets.df <-twListToDF(tweets)
為了用推文創(chuàng)建地圖,你需要收集的導(dǎo)出為 .csv 文件:
write.csv(tweets.df, "C:\Users\YourName\Documents\ApptoMap\tweets.csv")
#an example of a file extension of the folder in which you want to save the .csv file.
運(yùn)行前確保 R 代碼已保存然后繼續(xù)進(jìn)行下一步。.
生成地圖
現(xiàn)在你有了可以展示在地圖上的數(shù)據(jù)。在此教程中,我們將用一個(gè) R 包 Leaflet 做一個(gè)基本的應(yīng)用程序,這是一個(gè)生成交互式地圖的熱門(mén) JavaScript 庫(kù)。 Leaflet 使用 magrittr 管道運(yùn)算符 (%>%), 因?yàn)槠湔Z(yǔ)法自然,易于寫(xiě)代碼。剛接觸可能有點(diǎn)奇怪,但它確實(shí)降低了寫(xiě)代碼的工作量。
為了清晰起見(jiàn),在 RStudio 打開(kāi)一個(gè)新的 R 腳本安裝這些包:
install.packages("leaflet")
install.packages("maps")
library(leaflet)
library(maps)現(xiàn)在需要一個(gè)路徑讓 Leaflet 訪問(wèn)你的數(shù)據(jù):
read.csv("C:\Users\YourName\Documents\ApptoMap\tweets.csv", stringsAsFactors = FALSE)stringAsFactors = FALSE 意思是保留信息,不將它轉(zhuǎn)化成 factors。 (想了解 factors,讀這篇文章"stringsAsFactors: An unauthorized biography", 作者 Roger Peng)
是時(shí)候制作你的 Leaflet 地圖了。我們將使用 OpenStreetMap基本地圖來(lái)做你的地圖:
m <- leaflet(mymap) %>% addTiles()
我們?cè)诨镜貓D上加個(gè)圈。對(duì)于 lng 和 lat,輸入包含推文的經(jīng)緯度的列名,并在前面加個(gè)~。 ~longitude 和 ~latitude 指向你的 .csv 文件中與列名:
m %>% addCircles(lng = ~longitude, lat = ~latitude, popup = mymap$type, weight = 8, radius = 40, color = "#fb3004", stroke = TRUE, fillOpacity = 0.8)
運(yùn)行你的代碼。會(huì)彈出網(wǎng)頁(yè)瀏覽器并展示你的地圖。這是我前面收集的推文的地圖:
帶定位的推文地圖,使用了 Leaflet 和 OpenStreetMap CC-BY-SA
雖然你可能會(huì)對(duì)地圖上的圖文數(shù)量如此之小感到驚奇,通常只有 1% 的推文記錄了地理編碼。我收集了總數(shù)為 366 的推文,但只有 10(大概總推文的 3%)是記錄了地理編碼的。如果你為得到記錄了地理編碼的推文而困擾,改變搜索關(guān)鍵詞看看能不能得到更好的結(jié)果。
總結(jié)
對(duì)于初學(xué)者,把以上所有碎片結(jié)合起來(lái),從推特?cái)?shù)據(jù)生成一個(gè) Leaflet 地圖可能很艱難。 這個(gè)教程基于我完成這個(gè)任務(wù)的經(jīng)驗(yàn),我希望它能讓你的學(xué)習(xí)過(guò)程變得更輕松。
(題圖:瓊斯·貝克. CC BY-SA 4.0. 來(lái)源: Cloud, Globe. Both CC0.)
本文題目:用R收集和映射推特?cái)?shù)據(jù)的初學(xué)者向?qū)?
鏈接地址:http://fisionsoft.com.cn/article/dheppog.html


咨詢
建站咨詢
