当我开始学习R语言时,我也需要学习如何收集Twitter数据并将其绘制地图以用于研究目的。尽管互联网上有大量关于这个主题的信息,但我发现很难理解收集和绘制Twitter数据所涉及的内容。我不仅是R语言的新手,而且还不熟悉各种教程中的技术术语。尽管存在这些障碍,我还是成功了!在本教程中,我将分解如何收集Twitter数据并以即使是新手程序员也能理解的方式将其显示在地图上。
创建应用
如果你没有Twitter账户,首先你需要创建一个。之后,访问apps.twitter.com创建一个允许你收集Twitter数据的应用。不用担心,创建应用非常容易。你创建的应用将连接到Twitter应用程序编程接口(API)。将API视为某种电子私人助理。你将使用API要求另一个程序为你做某事。在本例中,你将连接到Twitter API并要求它收集数据。请注意不要请求太多,因为对你可以请求Twitter数据的次数有限制。
你可以使用两个API来收集推文。如果你想进行一次性推文收集,那么你将使用REST API。如果你想在特定时间段内持续收集推文,你将使用streaming API。在本教程中,我将重点介绍如何使用REST API。
创建应用后,转到Keys and Access Tokens选项卡。你将需要Consumer Key(API密钥)、Consumer Secret(API密钥)、Access Token和Access Token Secret才能在R语言中访问你的应用。
收集Twitter数据
下一步是打开R语言并准备编写代码。对于初学者,我建议使用RStudio,R语言的集成开发环境(IDE)。我发现在故障排除或测试代码时,使用RStudio很有帮助。R语言有一个访问REST API的包,名为 twitteR。
打开RStudio并创建一个新的RScript。完成此操作后,你需要安装并加载 twitteR 包
install.packages("twitteR") #installs TwitteR library (twitteR) #loads TwitteR
安装并加载 twitteR 包后,你需要输入你在上面部分获取的应用API信息
api_key <- "" #in the quotes, put your API key api_secret <- "" #in the quotes, put your API secret token token <- "" #in the quotes, put your token token_secret <- "" #in the quotes, put your token secret
接下来,连接到Twitter以访问API
setup_twitter_oauth(api_key, api_secret, token, token_secret)
让我们尝试进行关于社区花园和农贸市场的Twitter搜索
tweets <- searchTwitter("community garden OR #communitygarden OR farmers market OR #farmersmarket", n = 200, lang = "en")
这段代码的意思是搜索前200条英文推文 (n = 200) (lang = "en"),其中包含术语community garden或farmers market或任何提及这些术语的标签。
完成Twitter搜索后,将结果保存在数据框中
tweets.df <-twListToDF(tweets)
要使用你的推文创建地图,你需要将收集的内容导出到 .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.
在运行代码并继续下一步之前,请确保保存你的 R 代码。
创建地图
现在你有了数据,你可以将其显示在地图上。在本教程中,我们将使用R语言包 Leaflet 创建一个基本应用,Leaflet是一个流行的用于制作交互式地图的JavaScript库。Leaflet使用 magrittr 管道操作符(%>%),这使得代码更容易编写,因为语法更自然。起初可能看起来很奇怪,但它确实减少了你编写代码时必须做的工作量。
为了清晰起见,在RStudio中打开一个新的R脚本并安装这些包
install.packages("leaflet") install.packages("maps") library(leaflet) library(maps)
现在你需要一种方法让Leaflet访问你的数据
read.csv("C:\Users\YourName\Documents\ApptoMap\tweets.csv", stringsAsFactors = FALSE)
stringAsFactors = FALSE 意味着保持信息原样,不将其转换为因子。(有关因子的信息,请阅读Roger Peng的文章 "stringsAsFactors:未经授权的传记"。)
现在是制作Leaflet地图的时候了。你将使用 OpenStreetMap 基础地图作为你的地图
m <- leaflet(mymap) %>% addTiles()
让我们在基础地图上添加圆圈。对于 lng 和 lat,输入包含你的推文的纬度和经度的列名,后跟 ~。~longitude 和 ~latitude 指的是你的 .csv 文件中的列名
m %>% addCircles(lng = ~longitude, lat = ~latitude, popup = mymap$type, weight = 8, radius = 40, color = "#fb3004", stroke = TRUE, fillOpacity = 0.8)
运行你的代码。网络浏览器应该弹出并显示你的地图。这是我在上一节中收集的推文地图

按位置划分的推文地图,Leaflet和OpenStreetMap,CC-BY-SA
尽管你可能会对地图上推文数量较少感到惊讶,但通常只有1%的推文被地理编码。我总共收集了366条推文,但只有10条(约占总推文的3%)被地理编码。如果你在获取地理编码的推文时遇到问题,请更改你的搜索词,看看是否能获得更好的结果。
总结
对于初学者来说,将所有部分组合在一起以从Twitter数据创建Leaflet地图可能会让人感到不知所措。本教程基于我完成此任务的经验,我希望它能使你的学习过程更轻松。
Dorris Scott 将在 We Rise 女性科技大会 (#WeRiseTech) 6月23日至24日在亚特兰大举办的研讨会 From App to Map: Collecting and Mapping Social Media Data using R 中介绍这个主题。
2 条评论