R/add_cow_alliance.R

Defines functions add_cow_alliance

Documented in add_cow_alliance

#' Add Correlates of War alliance data to a data frame
#'
#' @description \code{add_cow_alliance()} allows you to add Correlates of War alliance
#' data to a dyad-year data frame
#'
#' @return \code{add_cow_alliance()} takes a dyad-year data frame and adds information about
#' the alliance pledge in that given dyad-year. These include whether there was an alliance
#' with a defense pledge, neutrality pledge, non-aggression pledge, or pledge for consultation
#' in time of crisis (entente).
#'
#' @details Duplicates in the original directed dyad-year alliance data were pre-processed. Check
#' \code{cow_alliance} in the package's `data-raw` directory on Github for more information.
#'
#' This function will also work with leader-dyad-years, though users should be careful with leader-level
#' applications of alliance data. Alliance data are primarily communicated yearly, making it possible---even
#' likely---that at least one leader-dyad in a given year is credited with an alliance that was not active in the particular
#' leader-dyad. The Correlates of War's alliance data are not communicated with time measurements more granular than
#' the year. Apply these data to leader-level analyses with that in mind.
#'
#' @author Steven V. Miller
#'
#' @param data a dyad-year or leader-dyad-year data frame (either "directed" or "non-directed")
#'
#' @references
#'
#' Gibler, Douglas M. 2009. \emph{International Military Alliances, 1648-2008}. Congressional Quarterly Press.
#'
#' @examples
#'
#' # just call `library(tidyverse)` at the top of the your script
#' library(magrittr)
#'
#' cow_ddy %>% add_cow_alliance()
#'

add_cow_alliance <- function(data) {

  if (length(attributes(data)$ps_data_type) > 0 && attributes(data)$ps_data_type %in% c("dyad_year", "leader_dyad_year")) {
    if (!all(i <- c("ccode1", "ccode2") %in% colnames(data))) {

      stop("add_cow_alliance() merges on two Correlates of War codes (ccode1, ccode2), which your data don't have right now. Make sure to run create_dyadyears() at the top of the pipe. You'll want the default option, which returns Correlates of War codes.")


    } else {
    cow_alliance %>%
      left_join(data, .) %>%
      mutate_at(vars("cow_defense", "cow_neutral", "cow_nonagg", "cow_entente"), ~ifelse(is.na(.), 0, .)) -> data

    }


  } else if (length(attributes(data)$ps_data_type) > 0 && attributes(data)$ps_data_type == "state_year") {

    stop("Right now, there is only support for dyad-year data.")

  } else  {
    stop("add_cow_alliance() requires a data/tibble with attributes$ps_data_type of dyad_year. Try running create_dyadyears() at the start of the pipe.")
  }

  return(data)
}

Try the peacesciencer package in your browser

Any scripts or data that you put into this service are public.

peacesciencer documentation built on March 24, 2022, 5:06 p.m.