library(readr)
library(DT)
library(ggplot2)
library(shiny)
library(shinydashboard)
library(rsconnect)
library(dplyr)
survey <- read_csv("EMPLOYEE ENGAGEMENT DATA.csv", col_names = TRUE)
employee <- read_csv("HEADCOUNT ANALYTICS.csv", col_names = TRUE)
mergedata <-
survey %>% inner_join(employee, by = c("EMPID", "BRANCH", "FUNCTION"))
ui <- fluidPage(
titlePanel("Akshay's Dashboard", windowTitle = "Dashboard"),
sidebarLayout(
sidebarPanel(
selectInput(
inputId = "xaxis",
label = "X axis variable",
choices = c(
"Employee Engagement Score" = "EES",
"Rewards and Recognition" = "RR",
"Career Growth" = "CG",
"Leadership Team" = "LT"
),
selected = "EES"
),
selectInput(
inputId = "yaxis",
label = "Y axis variable",
choices = c(
"Employee Engagement Score" = "EES",
"Rewards and Recognition" = "RR",
"Career Growth" = "CG",
"Leadership Team" = "LT"
),
selected = "RR"
),
radioButtons(
inputId = "color",
label = "Color plot by:",
choices = c(
"Branch" = "BRANCH",
"Department" = "FUNCTION",
"Gender" = "GENDER",
"Qualification" = "EDUQUAL",
"Work experience" = "EXP"
),
selected = "BRANCH"
),
checkboxInput(
inputId = "size",
label = "Set size by Work Experience:",
value = FALSE
),
sliderInput(
inputId = "alpha",
label = "Transparency",
min = 0,
max = 1,
value = 0.5
),
wellPanel(
checkboxInput(
inputId = "hist",
label = "Show histogram:",
value = FALSE
),
conditionalPanel(
"input.hist==true",
radioButtons(
inputId = "histselect",
label = "Select type of histogram",
choices = list(
"Employee Engagement Score" = "EES",
"Rewards and Recognition" = "RR",
"Career Growth" = "CG",
"Leadership Team" = "LT"
)
),
sliderInput(inputId = "binwidth",
label = "Set binwidth:",
min=1,max=30,value = 15)
)
)),
mainPanel(tabsetPanel(
type = "tabs",
tabPanel("Plot",
fluidRow(
splitLayout(
cellWidths = c("50%", "50%"),
plotOutput(outputId = "plot1"),
plotOutput(outputId = "plot2")
)
),fluidRow(
splitLayout(
cellWidths = c("50%", "50%"),
plotOutput(outputId = "plot3"),
plotOutput(outputId = "plot4")
)
)
),
tabPanel("Data Table", dataTableOutput(outputId = "datatable"))
))
)
)
server <- function(input, output) {
plotfunct <- reactive({
if (input$size)
{
ggplot(data = mergedata, aes_string(x = input$xaxis, y = input$yaxis)) +
geom_point(aes_string(
color = input$color,
size = factor(mergedata$EXP)
), alpha = input$alpha)+
labs(title = paste0("Change in ", input$yaxis, " for change in ", input$xaxis))
}
else
{
ggplot(data = mergedata, aes_string(x = input$xaxis, y = input$yaxis)) +
geom_point(aes_string(color = input$color), alpha = input$alpha) +
# geom_line(stat = "summary",fun.y=quantile,probs=.4,linetype=2,color="red")+
labs(title = paste0("Change in ", input$yaxis, " for change in ", input$xaxis))
}
})
plotfuncthis <- reactive({
if (input$hist)
{
ggplot(data = mergedata, aes_string(x = input$histselect)) +
geom_histogram(aes_string(fill = input$color),binwidth=input$binwidth,position = "dodge")
}
})
output$plot1 <- renderPlot({
plotfunct()
})
output$plot2 <-
renderPlot({
ggplot(data = mergedata, aes_string(x = input$xaxis, y = input$yaxis)) +
geom_line(aes_string(group = input$color, color = input$color)) +
labs(title = paste0("Change in ", input$yaxis, " for change in ", input$xaxis))
})
output$plot3 <- renderPlot({
plotfuncthis()
})
output$datatable <-renderDataTable({
mergedata
})
}
shinyApp(ui = ui, server = server)
LS0tDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQNCiAgaHRtbF9kb2N1bWVudDogZGVmYXVsdA0KLS0tDQotLS0NCnRpdGxlOiAiQWtzaGF5J3MgRGFzaGJvYXJkIDEiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCg0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHNoaW55KQ0KbGlicmFyeShzaGlueWRhc2hib2FyZCkNCmxpYnJhcnkocnNjb25uZWN0KQ0KbGlicmFyeShkcGx5cikNCg0KDQpzdXJ2ZXkgPC0gcmVhZF9jc3YoIkVNUExPWUVFIEVOR0FHRU1FTlQgREFUQS5jc3YiLCBjb2xfbmFtZXMgPSBUUlVFKQ0KZW1wbG95ZWUgPC0gcmVhZF9jc3YoIkhFQURDT1VOVCBBTkFMWVRJQ1MuY3N2IiwgY29sX25hbWVzID0gVFJVRSkNCm1lcmdlZGF0YSA8LQ0KICBzdXJ2ZXkgJT4lIGlubmVyX2pvaW4oZW1wbG95ZWUsIGJ5ID0gYygiRU1QSUQiLCAiQlJBTkNIIiwgIkZVTkNUSU9OIikpDQoNCg0KdWkgPC0gZmx1aWRQYWdlKA0KICB0aXRsZVBhbmVsKCJBa3NoYXkncyBEYXNoYm9hcmQiLCB3aW5kb3dUaXRsZSA9ICJEYXNoYm9hcmQiKSwNCiAgc2lkZWJhckxheW91dCgNCiAgICBzaWRlYmFyUGFuZWwoDQogICAgICBzZWxlY3RJbnB1dCgNCiAgICAgICAgaW5wdXRJZCA9ICJ4YXhpcyIsDQogICAgICAgIGxhYmVsID0gIlggYXhpcyB2YXJpYWJsZSIsDQogICAgICAgIGNob2ljZXMgPSBjKA0KICAgICAgICAgICJFbXBsb3llZSBFbmdhZ2VtZW50IFNjb3JlIiA9ICJFRVMiLA0KICAgICAgICAgICJSZXdhcmRzIGFuZCBSZWNvZ25pdGlvbiIgPSAiUlIiLA0KICAgICAgICAgICJDYXJlZXIgR3Jvd3RoIiA9ICJDRyIsDQogICAgICAgICAgIkxlYWRlcnNoaXAgVGVhbSIgPSAiTFQiDQogICAgICAgICksDQogICAgICAgIHNlbGVjdGVkID0gIkVFUyINCiAgICAgICksDQogICAgICANCiAgICAgIHNlbGVjdElucHV0KA0KICAgICAgICBpbnB1dElkID0gInlheGlzIiwNCiAgICAgICAgbGFiZWwgPSAiWSBheGlzIHZhcmlhYmxlIiwNCiAgICAgICAgY2hvaWNlcyA9IGMoDQogICAgICAgICAgIkVtcGxveWVlIEVuZ2FnZW1lbnQgU2NvcmUiID0gIkVFUyIsDQogICAgICAgICAgIlJld2FyZHMgYW5kIFJlY29nbml0aW9uIiA9ICJSUiIsDQogICAgICAgICAgIkNhcmVlciBHcm93dGgiID0gIkNHIiwNCiAgICAgICAgICAiTGVhZGVyc2hpcCBUZWFtIiA9ICJMVCINCiAgICAgICAgKSwNCiAgICAgICAgc2VsZWN0ZWQgPSAiUlIiDQogICAgICApLA0KICAgICAgcmFkaW9CdXR0b25zKA0KICAgICAgICBpbnB1dElkID0gImNvbG9yIiwNCiAgICAgICAgbGFiZWwgPSAiQ29sb3IgcGxvdCBieToiLA0KICAgICAgICBjaG9pY2VzID0gYygNCiAgICAgICAgICAiQnJhbmNoIiA9ICJCUkFOQ0giLA0KICAgICAgICAgICJEZXBhcnRtZW50IiA9ICJGVU5DVElPTiIsDQogICAgICAgICAgIkdlbmRlciIgPSAiR0VOREVSIiwNCiAgICAgICAgICAiUXVhbGlmaWNhdGlvbiIgPSAiRURVUVVBTCIsDQogICAgICAgICAgIldvcmsgZXhwZXJpZW5jZSIgPSAiRVhQIg0KICAgICAgICApLA0KICAgICAgICBzZWxlY3RlZCA9ICJCUkFOQ0giDQogICAgICApLA0KICAgICAgY2hlY2tib3hJbnB1dCgNCiAgICAgICAgaW5wdXRJZCA9ICJzaXplIiwNCiAgICAgICAgbGFiZWwgPSAiU2V0IHNpemUgYnkgV29yayBFeHBlcmllbmNlOiIsDQogICAgICAgIHZhbHVlID0gRkFMU0UNCiAgICAgICksDQogICAgICBzbGlkZXJJbnB1dCgNCiAgICAgICAgaW5wdXRJZCA9ICJhbHBoYSIsDQogICAgICAgIGxhYmVsID0gIlRyYW5zcGFyZW5jeSIsDQogICAgICAgIG1pbiA9IDAsDQogICAgICAgIG1heCA9IDEsDQogICAgICAgIHZhbHVlID0gMC41DQogICAgICApLA0KICAgICAgd2VsbFBhbmVsKA0KICAgICAgY2hlY2tib3hJbnB1dCgNCiAgICAgICAgaW5wdXRJZCA9ICJoaXN0IiwNCiAgICAgICAgbGFiZWwgPSAiU2hvdyBoaXN0b2dyYW06IiwNCiAgICAgICAgdmFsdWUgPSBGQUxTRQ0KICAgICAgKSwNCiAgICAgIGNvbmRpdGlvbmFsUGFuZWwoDQogICAgICAgICJpbnB1dC5oaXN0PT10cnVlIiwNCiAgICAgICAgcmFkaW9CdXR0b25zKA0KICAgICAgICAgIGlucHV0SWQgPSAiaGlzdHNlbGVjdCIsDQogICAgICAgICAgbGFiZWwgPSAiU2VsZWN0IHR5cGUgb2YgaGlzdG9ncmFtIiwNCiAgICAgICAgICBjaG9pY2VzID0gbGlzdCgNCiAgICAgICAgICAgICJFbXBsb3llZSBFbmdhZ2VtZW50IFNjb3JlIiA9ICJFRVMiLA0KICAgICAgICAgICAgIlJld2FyZHMgYW5kIFJlY29nbml0aW9uIiA9ICJSUiIsDQogICAgICAgICAgICAiQ2FyZWVyIEdyb3d0aCIgPSAiQ0ciLA0KICAgICAgICAgICAgIkxlYWRlcnNoaXAgVGVhbSIgPSAiTFQiDQogICAgICAgICAgKQ0KICAgICAgICApLA0KICAgICAgICBzbGlkZXJJbnB1dChpbnB1dElkID0gImJpbndpZHRoIiwNCiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAiU2V0IGJpbndpZHRoOiIsDQogICAgICAgICAgICAgICAgICAgIG1pbj0xLG1heD0zMCx2YWx1ZSA9IDE1KQ0KICAgICAgICANCiAgICAgICkNCiAgICApKSwNCiAgICBtYWluUGFuZWwodGFic2V0UGFuZWwoDQogICAgICB0eXBlID0gInRhYnMiLA0KICAgICAgdGFiUGFuZWwoIlBsb3QiLA0KICAgICAgICAgICAgICAgZmx1aWRSb3coDQogICAgICAgICAgICAgICAgIHNwbGl0TGF5b3V0KA0KICAgICAgICAgICAgICAgICAgIGNlbGxXaWR0aHMgPSBjKCI1MCUiLCAiNTAlIiksDQogICAgICAgICAgICAgICAgICAgcGxvdE91dHB1dChvdXRwdXRJZCA9ICJwbG90MSIpLA0KICAgICAgICAgICAgICAgICAgIHBsb3RPdXRwdXQob3V0cHV0SWQgPSAicGxvdDIiKQ0KICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICApLGZsdWlkUm93KA0KICAgICAgICAgICAgICAgICBzcGxpdExheW91dCgNCiAgICAgICAgICAgICAgICAgICBjZWxsV2lkdGhzID0gYygiNTAlIiwgIjUwJSIpLA0KICAgICAgICAgICAgICAgICAgIHBsb3RPdXRwdXQob3V0cHV0SWQgPSAicGxvdDMiKSwNCiAgICAgICAgICAgICAgICAgICBwbG90T3V0cHV0KG91dHB1dElkID0gInBsb3Q0IikNCiAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgKQ0KICAgICAgKSwNCiAgICAgIHRhYlBhbmVsKCJEYXRhIFRhYmxlIiwgZGF0YVRhYmxlT3V0cHV0KG91dHB1dElkID0gImRhdGF0YWJsZSIpKQ0KICAgICkpDQogICAgDQogICkNCikNCg0KDQpzZXJ2ZXIgPC0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCkgew0KICBwbG90ZnVuY3QgPC0gcmVhY3RpdmUoew0KICAgIGlmIChpbnB1dCRzaXplKQ0KICAgIHsNCiAgICAgIGdncGxvdChkYXRhID0gbWVyZ2VkYXRhLCBhZXNfc3RyaW5nKHggPSBpbnB1dCR4YXhpcywgeSA9IGlucHV0JHlheGlzKSkgKw0KICAgICAgICBnZW9tX3BvaW50KGFlc19zdHJpbmcoDQogICAgICAgICAgY29sb3IgPSBpbnB1dCRjb2xvciwNCiAgICAgICAgICBzaXplID0gZmFjdG9yKG1lcmdlZGF0YSRFWFApDQogICAgICAgICksIGFscGhhID0gaW5wdXQkYWxwaGEpKw0KICAgICAgICBsYWJzKHRpdGxlID0gcGFzdGUwKCJDaGFuZ2UgaW4gIiwgaW5wdXQkeWF4aXMsICIgZm9yIGNoYW5nZSBpbiAiLCBpbnB1dCR4YXhpcykpDQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICBnZ3Bsb3QoZGF0YSA9IG1lcmdlZGF0YSwgYWVzX3N0cmluZyh4ID0gaW5wdXQkeGF4aXMsIHkgPSBpbnB1dCR5YXhpcykpICsNCiAgICAgICAgZ2VvbV9wb2ludChhZXNfc3RyaW5nKGNvbG9yID0gaW5wdXQkY29sb3IpLCBhbHBoYSA9IGlucHV0JGFscGhhKSArDQogICAgICAgICMgZ2VvbV9saW5lKHN0YXQgPSAic3VtbWFyeSIsZnVuLnk9cXVhbnRpbGUscHJvYnM9LjQsbGluZXR5cGU9Mixjb2xvcj0icmVkIikrDQogICAgICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoIkNoYW5nZSBpbiAiLCBpbnB1dCR5YXhpcywgIiBmb3IgY2hhbmdlIGluICIsIGlucHV0JHhheGlzKSkNCiAgICAgIA0KICAgIH0NCiAgICANCiAgfSkNCiAgDQogIHBsb3RmdW5jdGhpcyA8LSByZWFjdGl2ZSh7DQogICAgaWYgKGlucHV0JGhpc3QpDQogICAgew0KICAgICAgZ2dwbG90KGRhdGEgPSBtZXJnZWRhdGEsIGFlc19zdHJpbmcoeCA9IGlucHV0JGhpc3RzZWxlY3QpKSArDQogICAgICAgIGdlb21faGlzdG9ncmFtKGFlc19zdHJpbmcoZmlsbCA9IGlucHV0JGNvbG9yKSxiaW53aWR0aD1pbnB1dCRiaW53aWR0aCxwb3NpdGlvbiA9ICJkb2RnZSIpDQogICAgfQ0KICB9KQ0KICANCiAgb3V0cHV0JHBsb3QxIDwtIHJlbmRlclBsb3Qoew0KICAgIHBsb3RmdW5jdCgpDQogIH0pDQogIG91dHB1dCRwbG90MiA8LQ0KICAgIHJlbmRlclBsb3Qoew0KICAgICAgZ2dwbG90KGRhdGEgPSBtZXJnZWRhdGEsIGFlc19zdHJpbmcoeCA9IGlucHV0JHhheGlzLCB5ID0gaW5wdXQkeWF4aXMpKSArDQogICAgICAgIGdlb21fbGluZShhZXNfc3RyaW5nKGdyb3VwID0gaW5wdXQkY29sb3IsIGNvbG9yID0gaW5wdXQkY29sb3IpKSArDQogICAgICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoIkNoYW5nZSBpbiAiLCBpbnB1dCR5YXhpcywgIiBmb3IgY2hhbmdlIGluICIsIGlucHV0JHhheGlzKSkNCiAgICAgIA0KICAgIH0pDQogIA0KICBvdXRwdXQkcGxvdDMgPC0gcmVuZGVyUGxvdCh7DQogICAgcGxvdGZ1bmN0aGlzKCkNCiAgfSkNCg0KICBvdXRwdXQkZGF0YXRhYmxlIDwtcmVuZGVyRGF0YVRhYmxlKHsNCiAgICBtZXJnZWRhdGENCiAgfSkNCiAgDQp9DQoNCnNoaW55QXBwKHVpID0gdWksIHNlcnZlciA9IHNlcnZlcikNCg0KYGBgDQoNCiN1cmwgdG8gdGhlIGRhc2hib2FyZDogaHR0cHM6Ly9ha3NoYXk5MS5zaGlueWFwcHMuaW8vUnNoaW55RGFzaGJvYXJkMS8=