R语言初学者指南:收集和绘制Twitter数据

学习使用R语言的twitteR和leaflet包,它们允许你绘制任何主题的推文位置。
509 位读者喜欢这篇文章。
Introduction to the Domain Name System (DNS)

Jason Baker。CC BY-SA 4.0。来源:Cloud, Globe。均为 CC0。

当我开始学习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 gardenfarmers 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()

让我们在基础地图上添加圆圈。对于 lnglat,输入包含你的推文的纬度和经度的列名,后跟 ~~longitude~latitude 指的是你的 .csv 文件中的列名

m %>% addCircles(lng = ~longitude, lat = ~latitude, popup = mymap$type, weight = 8, radius = 40, color = "#fb3004", stroke = TRUE, fillOpacity = 0.8)

运行你的代码。网络浏览器应该弹出并显示你的地图。这是我在上一节中收集的推文地图

Map of tweets by location

按位置划分的推文地图,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 中介绍这个主题。

标签
User profile image.
Dorris Scott 是佐治亚大学地理学博士生。她的研究重点是地理信息系统(GIS)、地理数据科学、可视化和公共卫生。她的论文是关于在GIS界面中结合关于退伍军人事务医院的传统和非传统数据,以帮助患者在医疗保健方面做出更明智的决定。

2 条评论

Dorris,这篇文章非常有见地且实用!

在尝试使它工作过程中,我注意到了两件事
- 在读取或写入CSV时,如果你在文件路径中使用“\”(反斜杠)字符,你实际上需要在每个实例中连续使用两个(即“\\”而不是“\”),否则,R语言会认为你试图转义字符串,从而导致问题
- 在读取CSV时,我必须将读取结果存储在“mymap”变量中,如下所示

mymap <- read.csv("C:\\Users\\YourName\\Documents\\ApptoMap\\tweets.csv", stringsAsFactors = FALSE)

这样做之后,我停止收到错误,并且只要CSV包含至少一对经纬度坐标,地图就会正确绘制。

感谢这个非常简短且可行的示例(包括Fillard在上面的更正,谢谢Fillard)。我正在Ubuntu上使用它,只需要对目录进行少量更改。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.