O primeiro passa consiste em instanciar as bibliotecas a serem utilizadas:

library(xlsx)
library(dplyr)
library(stringr)
library(ggplot2)
library(waffle)
library(emojifont)
library(showtext)
library(extrafont)
library(scales)
library(cowplot)  
library(DT)
library(kableExtra)
require(gridExtra)
library(gt)
library(tm)
library(SnowballC)
library(wordcloud2)
library(webshot)
    #webshot::install_phantomjs()
library(htmlwidgets)
library(here)
library(rio)

Programação Procedural

A abordagem procedural consiste em repetir sequancialmente as tarefas, abaixo são demonstrados alguns passos, sendo que aqueles relacionados a elaboração de tabelas e gráficos devem ser repetidos a cada novo cruzamento avaliado. É feita a carga de dados e nomeação de colunas para facilitar a análise

dados = read.xlsx2(file = "Respostas.xlsx", sheetIndex = 1 , stringsAsFactors=F)
questoes = names(dados)
dados = dados[, 1:28]
names(dados) = c("ID", "Ok1", "Ok2","Idade", "Genero", "Escolaridade", "Tempo", "Setor", "Proposito", "SeSimQual", 
  "CanaisColaboradores", "QuaisCanais", "Mural", "SeNao", "SatisfeitoClarezaInfo", "SatisfeitoComCanais", "DurantePandemia", "SatisfeitoComClima", "ReceboFeedbacks", "ImportanteTreinamento", "IngressosCortesia", "DatasComemorativas", "BeneficiosEmpresa", "EngajadoEmpresa" , "CrachaFoto", "Motivado", "PrincipaisCampanhas", "SugestaoComunicacao")
glimpse(dados)
## Rows: 20
## Columns: 28
## $ ID                    <chr> "44827.71648148148", "44827.73061342593", "44827…
## $ Ok1                   <chr> "Confirmo", "Confirmo", "Confirmo", "Confirmo", …
## $ Ok2                   <chr> "Confirmo", "Confirmo", "Confirmo", "Confirmo", …
## $ Idade                 <chr> "36", "33 anos", "21", "31", "21", "23 anos", "5…
## $ Genero                <chr> "Masculino", "Masculino", "Feminino", "Masculino…
## $ Escolaridade          <chr> "Ensino fundamental completo", "Ensino médio com…
## $ Tempo                 <chr> "De 3 - 5 anos", "De 6 - 10 anos", "De 1 - 2 ano…
## $ Setor                 <chr> "Atendimento Bomboniere", "Atendimento Bombonier…
## $ Proposito             <chr> "Sim", "Não", "Não", "Não", "Não", "Sim", "Sim",…
## $ SeSimQual             <chr> "Gostaria que melhorasse o marketing  da empresa…
## $ CanaisColaboradores   <chr> "Sim", "Sim", "Sim", "Sim", "Sim", "Sim", "Sim",…
## $ QuaisCanais           <chr> "WhatsApp", "WhatsApp", "WhatsApp", "WhatsApp, L…
## $ Mural                 <chr> "Sim", "Sim", "Sim", "Sim", "Sim", "Não", "Sim",…
## $ SeNao                 <chr> "", "", "", "", "Apenas questões que envolvam o …
## $ SatisfeitoClarezaInfo <chr> "5", "4", "2", "4", "4", "2", "5", "5", "4", "4"…
## $ SatisfeitoComCanais   <chr> "5", "4", "2", "4", "3", "1", "5", "5", "4", "5"…
## $ DurantePandemia       <chr> "5", "5", "5", "4", "5", "5", "5", "5", "3", "5"…
## $ SatisfeitoComClima    <chr> "5", "5", "3", "3", "4", "3", "4", "4", "2", "3"…
## $ ReceboFeedbacks       <chr> "5", "5", "2", "2", "5", "1", "5", "5", "2", "2"…
## $ ImportanteTreinamento <chr> "5", "5", "3", "5", "5", "5", "5", "5", "4", "4"…
## $ IngressosCortesia     <chr> "5", "5", "5", "4", "5", "5", "5", "5", "5", "5"…
## $ DatasComemorativas    <chr> "5", "5", "4", "1", "5", "3", "5", "4", "3", "4"…
## $ BeneficiosEmpresa     <chr> "5", "4", "4", "1", "5", "4", "5", "4", "3", "5"…
## $ EngajadoEmpresa       <chr> "5", "3", "3", "3", "5", "3", "5", "4", "5", "4"…
## $ CrachaFoto            <chr> "5", "5", "3", "4", "5", "3", "5", "4", "3", "2"…
## $ Motivado              <chr> "5", "4", "3", "4", "5", "4", "4", "4", "5", "4"…
## $ PrincipaisCampanhas   <chr> "Deixa o cinema a caracter  das datas. ", "Eu ac…
## $ SugestaoComunicacao   <chr> "Estou satisfeito com desempenho  do gnc. ", "Ac…

É feito o tratamento dos dados:

dados$Idade = str_remove_all(string = dados$Idade, " anos")
dados$Idade = str_remove_all(string = dados$Idade, "Porto Alegre ")
dados$Idade = as.numeric(dados$Idade)

Em uma primeira análise verifica-se a idade dos entrevistados:

hist(dados$Idade, col = "magenta", main = "Idade", xlab = "Idade", ylab = "Frequência")

Tratamento de dados para análise de correlação

Na sequência cria-se uma tabela cruzada com os dados de gênero dos entrevistados e um tráfico com os resultados

df = dados[, c(4:9, 11:13, 15:25)]
df$Idade = as.integer(if_else(is.na(df$Idade), mean(df$Idade, na.rm = 1), df$Idade))
df$Genero =if_else(df$Genero == "Masculino", 0, 1)
df$Escolaridade = if_else(df$Escolaridade == "Ensino fundamental incompleto", 1, 
                    if_else(df$Escolaridade == "Ensino fundamental completo", 2,
                     if_else(df$Escolaridade == "Ensino médio incompleto", 3,
                      if_else(df$Escolaridade == "Ensino médio completo", 4,
                        if_else(df$Escolaridade == "Ensino superior incompleto", 5, 6)))))

df$Tempo = if_else(df$Tempo == "Menos de 1 anos", 1, 
                          if_else(df$Tempo == "De 1 - 2 anos", 2,
                                  if_else(df$Tempo == "De 3 - 5 anos", 3,
                                          if_else(df$Tempo == "De 6 - 10 anos", 4, 5))))

df$Setor = if_else(df$Setor == "Atendimento Bomboniere", 1, 
                   if_else(df$Setor == "Atendimento Bilheteria", 2,
                           if_else(df$Setor == "Atendimento Recepção", 3, 4)))

df$Proposito = if_else(df$Proposito == "Sim", 1,2)

df$CanaisColaboradores = if_else(df$CanaisColaboradores == "Sim", 1,2)

df$QuaisCanais = if_else(df$QuaisCanais == "WhatsApp", 1, 
                   if_else(df$QuaisCanais == "WhatsApp, Ligação telefônica", 2,3))

df$Mural = if_else(df$Mural == "Sim", 1,2)
colunas<- names(df[, 9:20])
colunas
##  [1] "Mural"                 "SatisfeitoClarezaInfo" "SatisfeitoComCanais"  
##  [4] "DurantePandemia"       "SatisfeitoComClima"    "ReceboFeedbacks"      
##  [7] "ImportanteTreinamento" "IngressosCortesia"     "DatasComemorativas"   
## [10] "BeneficiosEmpresa"     "EngajadoEmpresa"       "CrachaFoto"
df[colunas] <- sapply(df[colunas],as.numeric)

colunas<- names(df[ , c(1, 3:20)])
colunas
##  [1] "Idade"                 "Escolaridade"          "Tempo"                
##  [4] "Setor"                 "Proposito"             "CanaisColaboradores"  
##  [7] "QuaisCanais"           "Mural"                 "SatisfeitoClarezaInfo"
## [10] "SatisfeitoComCanais"   "DurantePandemia"       "SatisfeitoComClima"   
## [13] "ReceboFeedbacks"       "ImportanteTreinamento" "IngressosCortesia"    
## [16] "DatasComemorativas"    "BeneficiosEmpresa"     "EngajadoEmpresa"      
## [19] "CrachaFoto"
df[colunas] <- sapply(df[colunas],as.double)
head(df)

Análises de Correlação

library(corrplot)
## corrplot 0.90 loaded
M<-cor(df)
corrplot(M, type="lower")

cor.mtest <- function(mat, ...) {
    mat <- as.matrix(mat)
    n <- ncol(mat)
    p.mat<- matrix(NA, n, n)
    diag(p.mat) <- 0
    for (i in 1:(n - 1)) {
        for (j in (i + 1):n) {
            tmp <- cor.test(mat[, i], mat[, j], ...)
            p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
        }
    }
  colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
  p.mat
}

Matriz com o p-valor da correlação

p.mat <- cor.mtest(df) # matriz de p-valores
#col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
col <- colorRampPalette(c("#c42348", "#d91e36", "#da344d", "#ec5766", "#ef7674", 
                          "#FFFFFF", 
                          "#90e0ef", "#48cae4", "#00b4d8", "#0096c7", "#0077b6"))

Nível de significância = 0.05

corrplot(round(M,2), method="color", col=col(200),  
         type="upper", order="hclust", bg="#B5B5B5",
         addCoef.col = "black", # Adicionando o coeficiente de correlação
         tl.col="black", tl.srt=90, #Cor do texto e angulo
         # Combinando com a significância
         p.mat = p.mat, sig.level = 0.05, insig = "blank", 
         # Alta significancia como esperado será exibida na diagonal diagonal
         diag=FALSE 
         )

library(RColorBrewer)
## Warning: package 'RColorBrewer' was built under R version 4.0.5
corrplot(M, order = 'AOE', addCoef.col = 'black', tl.pos = 'd',
         p.mat = p.mat, sig.level = 0.01, insig = "blank",
         cl.pos = 'n')

Níven de significância = 0.90

corrplot(round(M,1), method="color", col=col(200),  
         type="upper", order="hclust", 
         addCoef.col = "black", # Adicionando o coeficiente de correlação
         tl.col="black", tl.srt=90, #Cor do texto e angulo
         # Combinando com a significância
         p.mat = p.mat, sig.level = 0.90, insig = "blank", 
         # Alta significancia como esperado será exibida na diagonal diagonal
         diag=FALSE 
         )

r <- cor(df, use="complete.obs")
library(ggplot2)
library(ggcorrplot)
#ggcorrplot(r)
ggcorrplot(round(r,1), 
           hc.order = TRUE, 
           type = "lower",
           lab = TRUE,
           ggtheme = ggplot2::theme_dark(),
  colors = c("#e63946", "white", "#219ebc"))

df = as.data.frame(table(dados$Genero))
df
ggplot(df, aes(fill = Var1, values = Freq)) +
  geom_waffle(n_rows = 5, size = 0.33, colour = "white") +
  scale_fill_manual(name = NULL,
                    values = c("#189AB4", "#D58BDD"),
                    labels = c("Masculino", "Feminino")) +
  coord_equal() +
  theme_void() +
  ggtitle("Gênero") 

Reaproveitamento de Código

Para evitar ficar repetindo código é feito o reuso através do uso de funções que executam funcionalidades repetidas inúmeras vezes. É importante ressaltar que reuso está muito ligado ao uso de classes e instâncias em programação orientada a objetos POO; embora seja um mode de desenmvolver aplicações de maneira virtuosa e organizada, para este propósito o reuso se dará apenas por meio de funções sem uso de POO.

Inicialmente é carregado o arquivo “funcoes.R” com as funções que automatizam os outputs como gráficos e tabelas

source(file = "funcoes.R")

As funções contidas no arquivo “funcoes.R” são as seguintes, sendo responsáveis por criar tabelas cruzadas e gráficos dos dados das referidas tabelas:

tabelaCruzada = function(banco, colunaUm, colunaDois){
  as.data.frame(table(banco[, colunaUm],banco[, colunaDois]))
}

tabela = function(banco, nomes){
  names(banco) = nomes
  banco %>%
    kbl(caption = paste0("<strong style='color:black;font-size:1.5em;'>",VariavelDeInteresse,"</strong>")) %>%
    kable_material(c("striped", "hover"))
}

graficoUm = function(VariavelDeInteresse, titulo, banco){
  ggplot(data=banco, aes(x=Var1,y=Freq,fill=factor(Var1))) +
    geom_bar(position="dodge",stat="identity") + 
    coord_flip() +
    ggtitle(VariavelDeInteresse) + ylab("Frequência") + xlab(VariavelDeInteresse) + 
    guides(fill=guide_legend(title="Alternativas")) + 
    scale_y_continuous(breaks = c(1:max(df1$Freq))) +
    theme(text = element_text(size = 16))  
}

graficoDois = function(VariavelDeInteresse, titulo, banco, parametro){
  ggplot(data=df2, aes(x=Var1,y=Freq,fill=factor(Var2))) +
    geom_bar(position="dodge",stat="identity") + 
    coord_flip() +
    ggtitle(paste (VariavelDeInteresse,"de acordo com o", titulo)) + ylab("Frequência") + xlab(VariavelDeInteresse) + 
    guides(fill=guide_legend(title="Gênero"))+
    theme(plot.margin=unit(c(0.5,0.5,1,.5), "cm"))+ 
    scale_y_continuous(breaks = c(1:max(df2$Freq))) + 
    scale_fill_manual(values=c("#D58BDD","#189AB4", "#75E6DA", "#05445E", "#05445E", "#05445E", "#05445E"))+
    theme(text = element_text(size = 15))  
}

Primeira Análise Utilizando Grau de Instrução

É definida a descrição da variável de interesse

VariavelDeInteresse = "Grau de Instrução"
Coluna = "Tempo"

Cria-se a primeira tabela:

df1 = tabelaSimples(dados, "Escolaridade")
tabela(banco = df1, nomes = c(VariavelDeInteresse,  "Frequência"))
Grau de Instrução
Grau de Instrução Frequência
Ensino fundamental completo 2
Ensino fundamental incompleto 2
Ensino médio completo 10
Ensino médio incompleto 3
Ensino superior completo 1
Ensino superior incompleto 2

Cria-se a segunda tabela:

df2 = tabelaCruzada(dados,"Escolaridade","Genero")
tabela(banco = df2, nomes = c(VariavelDeInteresse, "Gênero", "Frequência"))
Grau de Instrução
Grau de Instrução Gênero Frequência
Ensino fundamental completo Feminino 0
Ensino fundamental incompleto Feminino 1
Ensino médio completo Feminino 7
Ensino médio incompleto Feminino 0
Ensino superior completo Feminino 1
Ensino superior incompleto Feminino 1
Ensino fundamental completo Masculino 2
Ensino fundamental incompleto Masculino 1
Ensino médio completo Masculino 3
Ensino médio incompleto Masculino 3
Ensino superior completo Masculino 0
Ensino superior incompleto Masculino 1

São criados os gráficos um e dois períodos das tabelas criadas acima

plotUm = graficoUm(VariavelDeInteresse = VariavelDeInteresse, titulo = "teste", banco = df1)
plotDois = graficoDois(VariavelDeInteresse = VariavelDeInteresse, titulo = "Gênero", banco = df2, parametro = "Genero")

Cria-se o grid com os dois gráficos gerados:

plot_grid(plotUm, plotDois,
          ncol = 1,
          align = "v")

ggplot(data = dados) +
  geom_bar(
    mapping = aes(x = Genero, fill = Escolaridade),
    position = "dodge"
  )

require(ggplot2)
require(moonBook)
## Loading required package: moonBook
## Warning: package 'moonBook' was built under R version 4.0.5
## 
## Attaching package: 'moonBook'
## The following object is masked from 'package:scales':
## 
##     comma
require(webr)
## Loading required package: webr
PieDonut(dados,aes(pies=Genero,donuts=Escolaridade))
## Warning: `guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> =
## "none")` instead.
## Warning: `guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> =
## "none")` instead.

PieDonut(dados,aes(pies=Genero,donuts=Escolaridade),ratioByGroup=FALSE)
## Warning: `guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> = "none")` instead.
## `guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> = "none")` instead.

PieDonut(dados,aes(pies=Genero,donuts=Escolaridade),selected=c(1,3,5),explodeDonut=TRUE)
## Warning: `guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> =
## "none")` instead.
## Warning: Ignoring unknown aesthetics: explode
## Warning: `guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> =
## "none")` instead.

Por fim é feita a exibição dos dados em uma tabela interativa com filtros e paginação

df2 %>% datatable(rownames = FALSE, colnames = c(VariavelDeInteresse, 'Gênero', 'Nº'), filter = 'top', options = list(pageLength = 5, autoWidth = TRUE))

Tempo de Empresa

Gráficos

## `summarise()` has grouped output by 'Escolaridade'. You can override using the
## `.groups` argument.

Consolidação

Idade do Colaborador

Gráficos

Consolidação

Setor da Empresa

Gráficos

Consolidação

Conhece o Propósito da Empresa

Gráficos

Consolidação

Os canais de comunicação que a empresa utiliza são de fácil acesso?

Gráficos

Consolidação

Quais canais utiliza na empresa

Gráficos

Consolidação

A empresa possui mural informativo?

Gráficos

Consolidação

Está satisfeito com a clareza da informação fornecida pele empresa?

Gráficos

Consolidação

A Empresa priorizou a segurança no retorno das atividades?

Gráficos

Consolidação

Está satisfeito com os canais utilizados pela empresa?

Gráficos

Consolidação

Está satisfeito com o clima organizacional da empresa?

Gráficos

Consolidação

Você recebe feedbaks da chefia em relação ao seu trabalho?

Gráficos

Consolidação

Você acha importante treinamentos para sua motivação?

Gráficos

Consolidação

Utiliza ingressos cortesia para seu lazer?

Gráficos

Consolidação

Acha importantes os brindes dados aos colaboradores em datas comemorativas?

Gráficos

Consolidação

Você conhene os benefícios oferecidos ao funcionários pela empresa?

Gráficos

Consolidação

Você se sente engajado com a empresa?

Gráficos

Consolidação

Você acha importante a política de crachá personalizado?

Gráficos

Consolidação

Você se sente motivado em realizar suas tarefas?

Gráficos

Consolidação

Na sua opinião, quais são as principais campanhas ou ações que a empresa já forneceu e que você acredita que deveria retornar. Ou algo novo que poderia ser introduzido dentro do GNC Cinemas?

Hoje qual seria sua sugestão, para melhoria na comunicação e motivação sua e de seus colegas, dentro da empresa?