R/jira_assignee.R

Defines functions jira_assignee

Documented in jira_assignee

#' jira_assignee
#'
#' A function for compiling information at an assignee level
#' @param df The data-frame created by running \code{\link{jira_issues}}
#' @param date_range Set a date range to filter to. Optional.
#' @seealso \code{\link{jira_issues}} which pulls the underlying data set
#' @export

jira_assignee <- function(df,date_range=NULL) {

  require(purrr)

  if (is_empty(date_range)==FALSE) {

    dates <- Sys.Date() - date_range

    df <- df %>%
      filter(created > dates | resolved > dates)

  }
  #calculate for all tickets

  x1 <- df %>%
    group_by(issue_assignee) %>%
    summarize(tickets = n(),
              resolved_tickets = sum(is_resolved),
              priority = mean(priority_score),
              avg_since_creation = mean(days_since_creation),
              pct_resolved = resolved_tickets/tickets) %>%
    ungroup()

    #calculate average age of open tickets

    x2 <- df %>%
    filter(is_resolved == 0) %>%
    group_by(issue_assignee) %>%
    summarize(age_open_tickets = mean(days_since_creation),
              priority_unresolved = mean(priority_score)) %>%
    ungroup()

    #calculate average resolution time

    x3 <- df %>%
    filter(is_resolved == 1) %>%
    group_by(issue_assignee) %>%
    summarize(avg_resolution_days = mean(days_to_resolve),
              priority_resolved = mean(priority_score)) %>%
    ungroup()

    final_set <- x1 %>%
      left_join(x2,by='issue_assignee') %>%
      left_join(x3,by='issue_assignee') %>%
      arrange(desc(tickets)) %>%
      mutate_all(funs(replace(., is.na(.), 0))) %>%
      mutate(priority_ratio = priority_resolved / priority_unresolved)

    return(final_set)

  }
neugelb/njira documentation built on Sept. 2, 2020, 7:02 p.m.