This page provides an overview for the get_basedata()
function, highlighting some of its potential uses.
First things first—let’s load the troopdata package
The troopdata package provides multiple functions to generate customizable datasets containing information on US military deployments and accompanying data. The get_basedata()
function represents the core of this package, providing customized data on US overseas troop deployments, specifically.
The second function, get_basedata()
returns a data frame containing information on the United States’ overseas military bases going back to the beginning of the Cold War. At its most basic the function will return a data frame containing country-base observations, along with the facility’s longitude and latitude (if available), and a series of binary variables indicating whether or not the facility is a full military base, a smaller lilypad, and if it is a currently funded site.
baseexample <- get_basedata(host = NA, country_count = FALSE)
head(baseexample)
#> # A tibble: 6 × 9
#> countryname ccode iso3c basename lat lon base lilypad fundedsite
#> <chr> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Afghanistan 700 AFG Bagram AB 34.9 69.3 1 0 0
#> 2 Afghanistan 700 AFG Kandahar Airfield 31.5 65.8 1 0 0
#> 3 Afghanistan 700 AFG Mazar-e-Sharif 36.7 67.2 1 0 0
#> 4 Afghanistan 700 AFG Gardez 33.6 69.2 1 0 0
#> 5 Afghanistan 700 AFG Kabul 34.5 69.2 1 0 0
#> 6 Afghanistan 700 AFG Herat 34.3 62.2 1 0 0
As with the get_troopdata()
function you can specify a numeric vector of COW country codes or a character vector of ISO3C codes to specify specific host countries.
For example, using COW country codes:
hostlist <- c(20, 200, 255, 645)
baseexample <- get_basedata(host = hostlist, country_count = FALSE)
#> Warning in if (is.na(host)) {: the condition has length > 1 and only the first
#> element will be used
head(baseexample)
#> # A tibble: 6 × 9
#> countryname ccode iso3c basename lat lon base lilypad fundedsite
#> <chr> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Ascension Isla… 200 GBR Ascension I… -7.95 -14.4 1 0 0
#> 2 BR Indian Ocea… 200 GBR Diego Garcia -7.32 72.4 1 0 0
#> 3 Canada 20 CAN <NA> 56.1 -106. 0 1 0
#> 4 Canada 20 CAN Argentia, N… 47.3 -54.0 1 0 0
#> 5 Germany 255 DEU Amberg 49.4 11.9 1 0 0
#> 6 Germany 255 DEU USAG Ansbach 49.3 10.6 1 0 0
And another using ISO3C codes:
hostlist.char <- c("CAN", "GBR", "PRI")
baseexample <- get_basedata(host = hostlist.char, country_count = FALSE)
#> Warning in if (is.na(host)) {: the condition has length > 1 and only the first
#> element will be used
Finally, users can also generate country-level counts of the number of U.S. military bases by changing the country_count
argument to TRUE
. Note that when using this argument you also need to specify the groupvar
argument, which specifies which identifier will be used to generate country-level totals. Though this may sound obvious individual country codes may include multiple geographic territories that are more finely parsed using various identifiers. Accepted character strings include “countryname”, “iso3c”, and “ccode”. And while this may seem redundant given the host argument, it should provide flexibility for users who may be more familiar with country codes and do not want to spend time trying to identify long-form country names.
hostlist <- c(20, 200, 255, 645)
baseexample <- get_basedata(host = hostlist, country_count = TRUE, groupvar = "ccode")
#> Warning: Must specify grouping variable when using country_count.
#> Warning: group var must equal 'countryname', 'ccode', or 'iso3c'.
#> Warning in if (is.na(host)) {: the condition has length > 1 and only the first
#> element will be used
head(baseexample)
#> # A tibble: 4 × 4
#> ccode basecount lilypadcount fundedsitecount
#> <dbl> <dbl> <dbl> <dbl>
#> 1 20 1 1 0
#> 2 200 18 0 0
#> 3 255 40 4 0
#> 4 645 2 2 0
So what can you do with these super useful and cool data? Lots of things! The study of basing and military deployments has been picking up over the last few years and there are lots of cool studies you should check out. With these data you can do cool things like this!
library(ggplot2)
map <- ggplot2::map_data("world")
basepoints <- get_basedata(host = NA)
basemap <- ggplot() +
geom_polygon(data = map, aes(x = long, y = lat, group = group), fill = "gray80", color = "white", size = 0.1) +
geom_point(data = basepoints, aes(x = lon, y = lat), color = "purple", alpha = 0.6) +
coord_equal(ratio = 1.3) +
theme_void() +
theme(plot.title = element_text(face = "bold", size = 15)) +
labs(title = "Locations of U.S. military facilities, 1950-2018")
basemap