用R搜集和映射脸书数据的初学者向导

优采云 发布时间: 2020-08-17 01:01

  用R搜集和映射脸书数据的初学者向导

  

  学习使用 R 的 twitteR 和 leaflet 包, 你就可以把任何话题的推文定位画在地图上。

  当我开始学习 R ,我也须要学习怎么出于研究的目的地搜集脸书数据并对其进行映射。尽管网上关于这个话题的信息好多,但我发现无法理解哪些与搜集并映射脸书数据相关。我除了是个 R 菜鸟,而且对各类教程中技术名词不熟悉。但虽然困难重重,我成功了!在这个教程里,我将以一种菜鸟程序员都能读懂的方法来功略怎么搜集脸书数据并来临展如今地图中。

  创建应用程序

  如果你没有脸书账号,首先你须要 注册一个。然后,到 创建一个容许你搜集脸书数据的应用程序。别担心,创建应用程序十分简单。你创建的应用程序会与脸书应用程序插口(API)相连。 想象 API 是一个*敏*感*词*电子个人助手。你可以使用 API 让其它程序帮你做事。这样一来,你可以接入脸书 API 令其搜集数据。只需确保不要恳求太多,因为脸书数据恳求次数是有限制 的。

  采集推文有两个可用的 API 。你若果做一次性的推文搜集,那么使用 REST API. 若是想在特定时间内持续搜集,可以用 streaming API。教程中我主要使用 REST API。

  创建应用程序以后,前往 Keys and Access Tokens 标签。你须要 Consumer Key (API key)、 Consumer Secret (API secret)、 Access Token 和 Access Token Secret 才能在 R 中访问你的应用程序。

  采集脸书数据

  下一步是打开 R 准备写代码。对于初学者,我推荐使用 RStudio,这是 R 的集成开发环境 (IDE) 。我发觉 RStudio 在解决问题和测试代码时很实用。 R 有访问该 REST API 的包叫 twitteR。

  打开 RStudio 并新建 RScript。做好这种以后,你须要安装和加载 twitteR 包:

  install.packages("twitteR")#安装TwitteRlibrary(twitteR)#载入TwitteR

  安装并载入 twitteR 包然后,你得输入上文提到的应用程序的 API 信息:

  api_key""#在冒号内装入你的APIkeyapi_secret""#在冒号内装入你的APIsecrettokentoken""#在冒号内装入你的tokentoken_secret""#在冒号内装入你的tokensecret

  接下来,连接脸书访问 API:

  setup_twitter_oauth(api_key,api_secret,token,token_secret)

  我们来试试使脸书搜索有关社区新苑和农夫市场:

  tweets"communitygardenOR#communitygardenORfarmersmarketOR#farmersmarket",n=200,lang="en")

  这个代码意思是搜索前 200 篇 (n = 200) 英文 (lang = "en") 的推文, 包括关键词 community garden 或 farmers market 或任何提到这种关键词的话题标签。

  推特搜索完成以后,在数据框中保存你的结果:

  tweets.df

  为了用推文创建地图,你须要搜集的导入为 .csv 文件:

  write.csv(tweets.df,"C:\Users\YourName\Documents\ApptoMap\tweets.csv")#anexampleofafileextensionofthefolderinwhichyouwanttosavethe.csvfile.

  运行前确保 R 代码已保存之后继续进行下一步。.

  生成地图

  现在你有了可以展示在地图上的数据。在此教程中,我们将用一个 R 包 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 意思是保留信息,不将它转化成 factors。 (想了解 factors,读这篇文章"stringsAsFactors: An unauthorized biography", 作者 Roger Peng)

  是时侯制做你的 Leaflet 地图了。我们将使用 OpenStreetMap基本地图来做你的地图:

  m%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%)是记录了地理编码的。如果你为得到记录了地理编码的推文而困惑,改变搜索关键词瞧瞧能不能得到更好的结果。

  总结

  对于初学者,把以上所有碎片结合上去,从脸书数据生成一个 Leaflet 地图可能太艰辛。 这个教程基于我完成这个任务的经验,我希望它能使你的学习过程显得更轻松。

  (题图:琼斯·贝克. CC BY-SA 4.0. 来源: Cloud, Globe. Both CC0.)

  作者:Dorris Scott

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线