# Load packages, set options
pkg_list <- c("knitr",
              "kableExtra",
              "tidyverse")

lapply(pkg_list, 
       library, 
       character.only = TRUE)

knitr::opts_chunk$set(echo = FALSE)

# Filter to projects, associate products 
projects <- data %>%
  tidyr::unnest(resourceType) %>%
  tidyr::unnest(resourceType) %>%
  dplyr::filter(type == "project") %>%
  dplyr::filter(program == program)

# Get list of contacts
contacts <- get_contacts(data)

tidy_contacts <- function(pointOfContact){

  pointOfContact %>%
    tidyr::unnest_wider("party") %>%
    tidyr::unnest_longer("contactId") %>%
    dplyr::left_join(contacts, by = "contactId") %>%
    dplyr::select(-"contactId") %>%
    tidyr::unnest_wider("electronicMailAddress",
                        names_sep = ".") %>%
    tidyr::unite("electronicMailAddress",
                 tidyr::contains("."),
                 sep = ", ",
                 na.rm = TRUE) %>%
    # Get rid of leading/trailing spaces in emails
    # and add a closing parentheses
    dplyr::mutate(electronicMailAddress = electronicMailAddress %>%
                    stringr::str_trim() %>%
                    stringr::str_c(")") %>%
                    dplyr::na_if(")")) %>%
    dplyr::group_by(dplyr::across(-c("name",
                                     "electronicMailAddress"))) %>%
    tidyr::unite("pointOfContact",
                 c("name", "electronicMailAddress"),
                 sep = " (",
                 na.rm = TRUE) %>%
    tidyr::nest() %>%
    tidyr::unnest_wider("data") %>%
    tidyr::unnest_wider("pointOfContact", names_sep = ".") %>%
    tidyr::unite("pointOfContact",
                 tidyr::contains("."),
                 sep = ", ",
                 na.rm = TRUE) %>%
    dplyr::ungroup()

}

Resources

Projects with Metadata

# Select title, sub-program, status project name, and contact
# role, if present
projects %>%

  dplyr::select("title",
                "subprogram",
                "status",
                "pointOfContact") %>%
  tidyr::unnest(status) %>%
  tidyr::unnest(pointOfContact) %>%
  tidyr::unnest(pointOfContact) %>%
  tidy_contacts() %>%
  tidyr::pivot_wider(names_from = "role", values_from = "pointOfContact") %>%
  dplyr::select("title",
                "subprogram",
                "status",
                "pointOfContact") %>%
  kbl() %>%
  kable_styling()


twisneskie/mdReports documentation built on Oct. 17, 2022, 7:33 a.m.