Adnan Fiaz
Question: Are there any useRs in Birmingham?
Data souce: Twitter (#rstats)
library(rtweet) # http://rtweet.info for more information
library(tidyverse)
# get all tweets that mention #rstats
usrs <- search_tweets("#rstats", n = 18000) %>%
# extract user data from the tweets
users_data() %>%
select(user_id, location) %>%
# drop users with no location
filter(location != "") %>%
# join together with the following (not everyone tweets)
union(
# get user data from users that mention #rstats in their profile
search_users("#rstats", n=1000) %>%
select(user_id, location) %>%
filter(location != "")
) %>%
# drop duplicates
distinct()| user_id | location |
|---|---|
| 636864273 | München, Bayern |
| 107600670 | Philadelphia |
| 2181077592 | New York, NY |
| 507582860 | St. Louis, MO |
| 2176483988 | New York, USA |
| 40699859 | Saint John, New Brunswick |
To enable visualisation we need more than the location, we need coordinates.
library(ggmap) # https://github.com/dkahle/ggmap for more info
# register a google api key to overcome quota limit
register_google(key=google_api_key)
# get the longitude/latitude
usrs <- usrs %>%
# limiting to the first 1500 users to not use up the quota
slice(1:1500) %>%
mutate_geocode(location) %>%
# drop failed requests
filter(!is.na(lat))qmplot(x=lon, y=lat, data=usrs, maptype="toner-lite", color = I("blue"), extent="device")

Question: where can I hold a meetup?
Data source: Google Maps / Places
library(googleway) # https://github.com/SymbolixAU/googleway for more info
# search for places within a radius of a location
center_of_birmingham <- c(52.483056,-1.893611)
function_rooms <- google_places(location = center_of_birmingham,
keyword = "function room", radius = 5000,
key = google_api_key)| name | lat | lng |
|---|---|---|
| Rai Function Hall | 52.50090 | -1.932395 |
| Vauxhall Sports & Social Club/ function room hire | 52.48688 | -1.877048 |
| Sapphire Conference & Banqueting Suite | 52.47202 | -1.881626 |
| Elegance Suite (Birmingham) | 52.49164 | -1.871361 |
| Kashmiri Dera Family Hall & Function Room | 52.51670 | -1.856179 |
| Diamonds Function Centre | 52.48968 | -1.906345 |
| Diamonds Function Centre | 52.48126 | -1.893614 |
| Yenton Assembly Rooms Ltd | 52.51927 | -1.847201 |
| Emerald Club | 52.47333 | -1.856447 |
| Gti Function Room | 52.50206 | -1.926524 |
| Saint Mary and St John’s Bar and Function Room | 52.51634 | -1.848177 |



Question: Are there any good transport links near the venues?
Data Source: Google Maps
train_stations <- google_places(location = center_of_birmingham,
place_type = "train_station", radius = 5000,
key = google_api_key) %>%
parse_result() %>%
mutate(type="train_station")



get_distances <- function(origins, destinations){
# query the Maps Distance API
dis <- google_distance(origins, destinations, key = google_api_key, mode="walking")
# check if the query returns any results
if("distance" %in% names(dis$rows$elements[[1]])){
return(dis$rows$elements[[1]]$distance$value)
}
return(NA)
}# for each option, calculate the distance to all transport links
result <- map2(options$lat, options$lng,
~ get_distances(c(.x, .y), transport[, c("lat", "lng")])) %>%
# rbind all the vectors
do.call(rbind, .) %>%
# convert to data.frame
as.data.frame() %>%
# add the name of each option
cbind("name"=options$name) %>%
# transpose the data.frame to get one [option, transport, distance] combo
gather(key="transport", value="distance", -name) %>%
filter(!is.na(distance), distance < 500) %>%
count(name) %>%
top_n(3, wt=n)| name | n |
|---|---|
| Birmingham School of Media | 1 |
| Diamonds Function Centre | 1 |
| The Button Factory | 1 |
| The Shakespeare | 2 |
| Total Pub Solutions Ltd | 1 |
| Unique Within The University of Birmingham | 1 |
Questions?