knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
One of the nice things about the Apple data is that it goes to the city scale. This matches up nicely with the United Nations Code for Trade and Transport Locations schema - a detailed schema that gives a great deal of information about these cities, including, for many, geospatial information. We can look at these cities, then, using some standard spatial methods.
Let's load the data.
library(covid19mobility) library(sf) library(rnaturalearth) library(dplyr) library(ggplot2) apple_cities <- refresh_covid19mobility_apple_city()
To turn it into something spatial, we'll need to join it with the UN LOCODE classification, filter out missing spatial info, and then transform it, using as our Coordinate Reference System EPSG 4326.
# Get UN LOCODEs # from jebyrnes/unlocode locode_url <- "https://github.com/jebyrnes/unlocodeR/raw/master/data/unlocode.rda" f <- tempfile() utils::download.file(locode_url, f, quiet = TRUE) load(f) # loads unlocode unlink(f) #filter to only what we need unlocode <- unlocode %>% select(un_locode, latitude_dec, longitude_dec ) # JOIN! apple_cities_spatial <- apple_cities %>% left_join(unlocode, by = c("location_code" = "un_locode")) %>% #remove no spatial info filter(!is.na(latitude_dec)) %>% #turn into an sf object using x, y st_as_sf(coords = c("longitude_dec", "latitude_dec"), crs = 4326)
So, where are these cities around the globe? Let's look!
country_map <- rnaturalearth::ne_countries(returnclass = "sf") unique_cities <- apple_cities_spatial %>% group_by(location_code) %>% slice(1L) %>% ungroup() ggplot() + geom_sf(data = country_map, fill = "lightgrey") + geom_sf(data = unique_cities)
So, given this map, let's look at change between February 1st and April 1st, and then between April 1st and June 1st.
apple_cities_spatial_changes <- apple_cities_spatial %>% group_by(location_code, data_type) %>% filter(as.character(date) %in% c("2020-02-01", "2020-04-01", "2020-06-01")) %>% arrange(date) %>% summarize(feb_to_april = value - value, april_to_june = value - value) %>% ungroup()
Let's look at the Februrary to April change first
ggplot() + geom_sf(data = country_map, fill = "lightgrey") + geom_sf(data = apple_cities_spatial_changes, aes(color = feb_to_april), alpha = 0.3) + scale_color_viridis_c(limits = c(-250,250)) + facet_grid(data_type~.)
What about April to June?
ggplot() + geom_sf(data = country_map, fill = "lightgrey") + geom_sf(data = apple_cities_spatial_changes, aes(color = april_to_june), alpha = 0.3) + scale_color_viridis_c(limits = c(-250,250)) + facet_grid(data_type~.)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.