我想使用twitteR运行一个简单的搜索,但只返回位于美国的推文我知道twitteR有一个lat / long的地理编码参数和纬度/长度内的里程数,但这种定位整个国家的推文的方式似乎硬。
我只会输入美国推文的论点?
谢谢,
答案 0 :(得分:0)
我做了一个简短的搜索,看起来twitteR没有内置的国家/地区参数。但由于你有纬度/经度,因此对美国国家形状文件(即多边形点)进行空间连接非常简单。
在此示例中,我使用shapefile from Census.gov和 spatialEco 包作为其point.in.polygon()
函数。与其他软件包提供的功能相比,它具有非常快速的空间连接功能,即使您拥有数十万个坐标和数十个多边形。如果您有数百万条推文 - 或者您稍后决定加入多个多边形,例如所有世界国家 - 然后它可能会慢得多。但是对于大多数用途来说,速度非常快。
(另外,我没有设置Twitter API,因此我将使用带有tweet_ids和lat / long的示例数据框。)
library(maptools) # to
library(spatialEco)
# First, use setwd() to set working directory to the folder called cb_2015_us_nation_20m
us <- readShapePoly(fn = "cb_2015_us_nation_20m")
# Alternatively, you can use file.choose() and choose the .shp file like so:
us <- readShapePoly(file.choose())
# Create data frame with sample tweets
# Btw, tweet_id 1 is St. Louis, 2 is Toronto, 3 is ouston
tweets <- data.frame(tweet_id = c(1, 2, 3),
latitude = c(38.610543, 43.653226, 29.760427),
longitude = c(-90.337189, -79.383184, -95.369803))
# Use point.in.poly to keep only tweets that are in the US
coordinates(tweets) <- ~longitude+latitude
tweets_in_us <- point.in.poly(tweets, us)
tweets_in_us <- as.data.frame(tweets_in_us)
现在,如果你看一下tweets_in_us
,你应该只看到其纬度/长度落在美国范围内的推文。