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.

Basic Use

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

Applications

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