# 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() }
# 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()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.