---
title: "Отчет о работе с сотрудниками исследуемой подгруппы"
output:
flexdashboard::flex_dashboard:
theme: flatly
source_code: embed
orientation: rows
---
```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse)
library(plotly)
library(wordcloud2)
library(crosstalk)
library(tidyverse)
library(plotly)
library(DBI)
library(RMariaDB)
library(tidymodels)
library(rpart.plot)
con <- dbConnect(RMariaDB::MariaDB(),
user='studentminor',
password='DataMinorHSE!2020',
dbname='employee',
host='34.88.193.134',
port = 3306)
rd2021 <- read.csv("~/RD2021.csv")
ddata = rd2021 %>% dplyr::select(JobRole, Attrition) %>% count(JobRole, Attrition) %>% mutate(Attrition = ifelse(Attrition==0, 'Остался', 'Ушел'))
ddata <- SharedData$new(ddata)
```
Inputs {.sidebar}
-------------------------------------
```{r}
filter_select('JobRole', 'Должность', ddata, ~JobRole)
filter_select("Attrition", "Отток", ddata, ~Attrition)
filter_slider("n", "Количество", ddata, ~n)
```
Row {data-height=200}
-------------------------------------
### Целевой департамент
```{r}
value1 = 'R&D'
valueBox(value1, icon = "fas fa-flask", color = "primary")
```
### Верхнаяя граница количества лет работы в компании
```{r}
value2 = rd2021$YearsAtCompany %>% max()
valueBox(paste(as.character(value2), 'лет', sep =' '), icon = "far fa-id-badge", color = "primary")
```
### Разница в относительном оттоке по сравнению с показателем во всей выборке
```{r}
v = rd2021 %>% count(Attrition)
f = dbGetQuery(con, "SELECT Attrition, COUNT(*) AS n FROM portfolio GROUP BY Attrition")
num = round(v[2,2]/(v[1,2]+v[2,2]) - f[1,2]/(f[1,2]+f[2,2]),3)*100
value3 = paste(as.character(num), "%", sep="")
valueBox(value3)
```
Row {data-height=500}
-------------------------------------
### Интерактивный график
```{r}
ddata %>% plot_ly(x = ~as.factor(JobRole), y = ~as.numeric(n), color = ~as.factor(Attrition),
colors = c("#C0C0C0", "#990000"),
type = 'bar', hoverinfo = 'y', opacity = 0.8) %>%
layout(title = "Отток сотрудников компании в зависимости от должности",
xaxis = list(title = "Специальности"),
yaxis = list(title = "Кол-во"))
```
### Текстом выделены проблемные сотрудники компании
```{r}
data = rd2021 %>% count(OverTime, JobRole) %>% filter(OverTime == 'Yes') %>% select(-OverTime) %>% arrange(-n)
data1 = data
library(ggplot2)
data[3:6,1] = c('','','', '')
# Compute percentages
data$fraction <- data$n / sum(data$n)
# Compute the cumulative percentages (top of each rectangle)
data$ymax <- cumsum(data$fraction)
# Compute the bottom of each rectangle
data$ymin <- c(0, head(data$ymax, n=-1))
# Compute label position
data$labelPosition <- (data$ymax + data$ymin) / 2
# Compute a good label
data$label <- paste0(data$JobRole)
# Make the plot
ggplot(data, aes(ymax=ymax, ymin=ymin, xmax=4, xmin=3, fill=data1$JobRole)) +
geom_rect() +
geom_text( x=2, aes(y=labelPosition, label=label),color = 'black', size=3 )+ # x here controls label position (inner / outer)
scale_fill_brewer(palette= 'Reds') +
scale_color_brewer(palette=2) +
coord_polar(theta="y") +
xlim(c(-1, 4)) +
theme_void() +
theme(legend.position = "none") + labs(title= "Доля специлистов R&D с фактом наличия доп.часов работы")
```
Row {data-height=200}
-------------------------------------
### Сокращение оттока после улучшения условий работы
```{r}
first.test <- read.csv("~/first_stage.csv")
init.test <- read.csv("~/init_test.csv")
value = round(((init.test[2,3]-first.test[2,3])/init.test[2,3])*100,1)
value4 = paste(value, "%", sep="")
valueBox(value4, icon = 'fas fa-chart-line',color = '#3CB371')
```
### Требуется для достижения повышения З/П
```{r}
data_5 = read.csv('~/to_pay.csv')
value5 = data_5[1,2]
valueBox(value5, icon = "fas fa-dollar-sign", color = '#3CB371')
```
### Финальный эффект от двух предлагаемых решений
```{r}
fin.test <- read.csv("~/fin_test.csv")
value = round(((init.test[2,3]-fin.test[2,3])/init.test[2,3])*100,1)
value6 = paste(value, "%", sep="")
valueBox(value6, icon = 'fas fa-chart-line' ,color = '#3CB371')
```
```{r}
dbDisconnect(con)
```