---
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