--- title: " Your Title" author: "Your Name" date: "7/17/2022" output: html_document: toc: true toc_float: true --- ```{r setup, include=FALSE} # setting various messages to false to eliminate in the final report knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE, cache = TRUE) ``` ```{r add_company_logo} # Replace logo with your company logo htmltools::img(src = knitr::image_uri("./your_company_logo_small.png"), alt = 'company_logo', style = 'position:absolute; top:0; right:0; padding:10px') ``` ```{r toc_color, eval = F } ### Added the following HTLM text in body of doc itself right below this chunk ### This works with the floating TOC on the upper left and lets you change the ### default branding to your company branding. ### This script read as HTML and will not appear in the body of your text ``` ## Purpose Statement One sentence on what this is. One or two sentences on what you did.\ Keep it simple. If this is not short and to the point, they won't bother to continue reading further. * Point 1 * Point 2 * Point 3 ## Key Findings 1. Finding 1 2. Finding 2 3. Finding 3 ```{r libraries} ### Load whatever libraries you need here ### I'm including some of my own to get you started library(inspectdf) # exploratory tools library(tidyverse) # all things tidy like dplyr, ggplot, etc. library(knitr) # For tables library(kableExtra)# For tables formatting library(scales) # For text formatting in plots ``` ```{r load_data} ### Load sample data ### Change file and location as needed d <- readr::read_csv("data/Sim_Turnover_Data_HR_Analytics_101_CSV.csv", show_col_types = F) # creating factors from numeric for later figures and interpretability d <- d %>% mutate(gender = factor(gender, levels = c("Female", "Male")), role = factor(role, levels = c("CEO", "VP", "Director", "Manager", "Ind")), perf = case_when(perf == 1 ~ "Low", perf == 2 ~ "Medium", TRUE ~ "High") %>% factor(level = c("Low", "Medium", "High")), vol_leave = case_when(vol_leave == 1 ~ "Yes", TRUE ~ "No") %>% factor(levels = c("No", "Yes"))) # Data for just those that have remained with company # Simplifying assumption that we have only vol departures d_here <- d %>% filter(vol_leave == "No") ``` ```{r inspect, eval = F} ### Lay some eyes on your data first ### Set eval to FALSE so this code chunk won't run or be seen ### when creating your final report head(d_here) summary(d_here) ``` ## Workforce Overview * Include basic demographics to get the reader oriented quickly * Focus on tables and figures ### Roles ```{r wf_by_gen} # Role by Gender d_here %>% select(role, gender) %>% group_by(role) %>% count(gender) %>% ungroup() %>% pivot_wider(id_cols = role, names_from = "gender", values_from = "n", values_fill = 0) %>% rename(Role = "role") %>% knitr::kable(caption = "Roles by Gender") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed")) ``` ### Age ```{r age_roles_gender} # Boxplots for age d_here %>% filter(role %in% c("CEO", "VP") == F) %>% select(role, gender, age) %>% mutate(role = fct_reorder(role, desc(role))) %>% # reordering ggplot(aes(y = age, x = gender, fill = gender)) + geom_boxplot() + facet_wrap(~role) + ylab("Age") + xlab("") + scale_fill_viridis_d(begin = .4, end = .8, name = "") + theme_bw() ``` ### Performance Ratings ```{r perf_by_gen} # Get proportion of perf levels within role d_perf_prop <- d_here %>% filter(role %in% c("CEO", "VP") == F) %>% # mutate(role = factor(role, levels = c("Director", "Manager", "Ind"))) %>% select(role, gender, perf) %>% group_by(role) %>% count(perf, gender) %>% mutate(prop = n/ sum(n)) %>% ungroup() # ggplot d_perf_prop %>% mutate(role = fct_reorder(role, desc(role))) %>% ggplot(aes(x = perf, y = prop, fill = gender)) + geom_bar(stat = "identity", position = "dodge") + scale_y_continuous(labels = percent) + scale_fill_viridis_d(begin = .4, end = .8, name = "") + facet_wrap(~role) + ylab("") + xlab("Performance Level") + ggtitle("Performance Level \nby Role and Gender") + theme_bw() ``` ### Annual Salaries ```{r salary_age} ### start here, reorder.... # creating new data filtering out CEO and VP d_here %>% filter(role %in% c("CEO", "VP") == F) %>% mutate(role = fct_reorder(role, desc(role))) %>% # reording role ggplot(aes(y = salary, x = gender, fill = gender)) + geom_boxplot() + facet_wrap(~role) + scale_fill_viridis_d(begin = .4, end = .8, name = "") + scale_y_continuous(labels = scales::dollar_format()) + ylab("") + xlab("") + theme_bw() ``` ## Turnover * Breakdown turnover rates by the big pieces: demographics, role, salary, etc. * Nothing is set in stone: test, get feedback early, iterate. * For simplification, I have ignored dates of departure and have only vol departures but those may be important for your final analysis depending on your data and purpose. ### Gender ```{r turnover_gender} # Note using the all of the d data here, not just the data filter to the # current workforce # by gender only d %>% filter(role %in% c("Ind", "Manager", "Director")) %>% count(gender, vol_leave) %>% group_by(gender) %>% mutate(prop_leave = n/sum(n)) %>% ungroup() %>% filter(vol_leave == "Yes") %>% ggplot(aes(y = prop_leave, x = gender, fill = gender)) + geom_bar(stat = "identity") + scale_y_continuous(labels = scales::percent_format(), limits =c(0,1), name = "Voluntary Departures") + scale_fill_viridis_d(begin = .4, end = .8) + ggtitle("Turnover by Gender", subtitle = "Last XYZ Years") ### Mosaic plot as alternative presentation mosaicplot(gender ~ vol_leave, data = d, ylab = "Departure", xlab = "", col = c("#2A768EFF", "#78D152FF"), main = "Turnover by Gender") ``` ### Gender and Business Area ```{r turnover_multi_factor} # By gender and area d %>% filter(role %in% c("Ind", "Manager", "Director")) %>% count(gender, vol_leave, area) %>% group_by(gender, area) %>% mutate(prop_leave = n/sum(n)) %>% ungroup() %>% filter(vol_leave == "Yes") %>% ggplot(aes(y = prop_leave, x = gender, fill = gender)) + geom_bar(stat = "identity") + facet_wrap(~area) + scale_y_continuous(labels = scales::percent_format(), name = "Voluntary Departures") + scale_x_discrete(name = "") + scale_fill_viridis_d(begin = .4, end = .8, name = "") + ggtitle("Turnover by Gender and Area", subtitle = "Last XYZ Years") + theme_bw() ``` ### Gender and Role ```{r} # By gender and role d %>% filter(role %in% c("Ind", "Manager", "Director")) %>% count(gender, vol_leave, role) %>% group_by(gender, role) %>% mutate(prop_leave = n/sum(n)) %>% ungroup() %>% filter(vol_leave == "Yes") %>% mutate(role = fct_reorder(role, desc(role))) %>% ggplot(aes(y = prop_leave, x = gender, fill = gender)) + geom_bar(stat = "identity") + facet_wrap(~role) + scale_y_continuous(labels = scales::percent_format(), name = "Voluntary Departures") + scale_x_discrete(name = "") + scale_fill_viridis_d(begin = .4, end = .8, name = "") + ggtitle("Turnover by Gender and Role", subtitle = "Last XYZ Years") + theme_bw() ``` ### Gender and Performance ```{r turnover_perf} d %>% group_by(perf, vol_leave, gender) %>% summarize(n = n()) %>% group_by(gender, perf) %>% mutate(prop = n/sum(n)) %>% ungroup() %>% filter(vol_leave == "Yes") %>% ggplot(aes(x = perf, y = prop, fill = gender)) + geom_bar(stat = "identity", position = "dodge") + scale_y_continuous(label = percent_format()) + scale_fill_viridis_d(begin = .4, end = .8, name = "") + ggtitle(label = "Turnover by Performance and Gender") + labs(fill = "Departure Status") + xlab("Performance") + ylab ("Voluntary Departure") + theme_bw() ``` ## Summary Provide a very short summary statement about what you found. * Point 1 * Point 2 * Point 3 ## Next Actions Say what the next actions might be. This could be the next analysis or some specific set of actions. Bullets are always a plus for clarity and punchiness. * Point 1 * Point 2 * Point 3