Manipulação e Visualização de Dados

leg.ufpr.br/~walmes/cursoR/data-vis
#-----------------------------------------------------------------------

rm(list = objects())

library(tidyverse)
library(RColorBrewer)

# display.brewer.all()

# Importação do questionário.
tb <- read_csv("./data/Avaliacao-do-Curso- GenMelhor-UFV.csv")

#-----------------------------------------------------------------------
# Questões aplicadas.

ques <- names(tb) %>%
    tail(n = -1) %>%
    str_c(1:length(.), ., sep = ". ") %>%
    map(strwrap, width = 50, simplify = TRUE)

# Questões do questionário.
for (i in ques) {
    cat(i, sep = "\n")
    cat("\n")
}
## 1. Curso de Pós Graduação
## 
## 2. Sou usuário de R há ____ anos.
## 
## 3. Minha frequência de uso do R é ____.
## 
## 4. O meu conhecimento de R estava ____ para
## acompanhar o Curso.
## 
## 5. O tempo necessário para praticar cada desafio
## foi ____ para eu desenvolver a solução.
## 
## 6. A duração do Curso (20 horas) foi ____ para
## cobrir o conteúdo e praticar.
## 
## 7. O Curso com este conteúdo deveria ter duração
## de ____ horas.
## 
## 8. Meu aproveitamento do conteúdo do Curso foi
## ____ do que eu gostaria.
## 
## 9. O conteúdo coberto no Curso foi ___ do que eu
## esperava.
## 
## 10. Eu gostaria de fazer um próximo Curso de R
## com esse instrutor sobre ____.
## 
## 11. Comentários, sugestões & reclamações
# Elimina a coluna de estampa de tempo.
tb[[1]] <- NULL

nms <- names(tb)
names(tb) <- sprintf("V%d", 1:ncol(tb))

#-----------------------------------------------------------------------
# Para retornar o gráfico de setores.

my_pie <- function(tb, txt) {
    txt <- str_c(strwrap(txt, width = 20), collapse = "\n")
    ggplot(tb_aux,
           aes(x = 0, y = n, fill = lev)) +
        geom_col(color = "black") +
        scale_fill_brewer(name = txt, palette = "PuOr") +
        xlab(NULL) +
        ylab(NULL) +
        geom_text(mapping = aes(x = 0.2, label = label),
                  position = position_stack(vjust = 0.5)) +
        coord_polar(theta = "y") +
        theme_minimal()
}

my_bar <- function(tb, txt) {
    ggplot(tb_aux,
           aes(x = lev, y = n)) +
        geom_col(fill = "purple", color = "black") +
        xlab(txt) +
        ylab("Frequência absoluta") +
        geom_text(mapping = aes(label = label),
                  vjust = -0.2)
}

my_stk <- function(tb, txt) {
    ggplot(tb_aux,
           aes(x = 0,
               y = n,
               fill = fct_relevel(lev,
                                  rev(levels(lev))))) +
        geom_col(color = "black") +
        scale_fill_brewer(name = NULL,
                          palette = "PuOr",
                          direction = -1) +
        xlab(NULL) +
        ylab("Frequência absoluta") +
        geom_text(mapping = aes(x = -0.4,
                                label = sprintf("%s: %s", lev, label)),
                  hjust = 0,
                  position = position_stack(vjust = 0.5)) +
        ggtitle(label = txt) +
        theme_minimal() +
        theme(legend.position = "none") +
        scale_x_continuous(breaks = NULL)
}

my_dot <- function(tb, txt) {
    tb_large <- tb_aux[rep(1:nrow(tb_aux), times = tb_aux$n), ]
    ggplot(tb_large,
           aes(x = lev)) +
        geom_dotplot(color = "black") +
        xlab(txt) +
        ylab(NULL) +
        geom_text(data = tb_aux,
                  mapping = aes(x = lev, y = 0, label = label),
                  vjust = -0.1, hjust = 0, nudge_x = 0.1) +
        scale_y_continuous(NULL, breaks = NULL)
}

# 1. -------------------------------------------------------------------

nms[1]
## [1] "Curso de Pós Graduação"
x <- tb[[1]] %>%
    str_to_upper() %>%
    iconv(to = "ASCII//TRANSLIT") %>%
    sort()
x
##  [1] "DOUTORADO"                                                         
##  [2] "DOUTORADO EM ESTATISTICA APLICADA E BIOMETRIA"                     
##  [3] "DOUTORADO EM ESTATISTICA APLICADA E BIOMETRIA"                     
##  [4] "DOUTORADO EM ESTATISTICA APLICADA E BIOMETRIA"                     
##  [5] "DOUTORADO EM ESTATISTICA APLICADA E BIOMETRIA"                     
##  [6] "DOUTORADO EM ESTATISTICA APLICADA E BIOMETRIA"                     
##  [7] "DOUTORADO EM ESTATISTICA APLICADA E BIOMETRIA"                     
##  [8] "DOUTORADO EM FITOPATOLOGIA"                                        
##  [9] "DOUTORADO EM FITOPATOLOGIA"                                        
## [10] "DOUTORADO EM FITOPATOLOGIA"                                        
## [11] "DOUTORADO EM GENETICA E MELHORAMENTO"                              
## [12] "DOUTORADO EM GENETICA E MELHORAMENTO"                              
## [13] "DOUTORADO EM GENETICA E MELHORAMENTO"                              
## [14] "DOUTORADO EM GENETICA E MELHORAMENTO DE PLANTAS"                   
## [15] "DOUTORADO EM GENETICA E MELHORAMENTO DE PLANTAS"                   
## [16] "DOUTORADO EM GENETICA E MELHORAMENTO UFV"                          
## [17] "DOUTORADO EM PRODUCAO VEGETAL"                                     
## [18] "DOUTORADO EM PRODUCAO VEGETAL"                                     
## [19] "DOUTORADO EM PRODUCAO VEGETAL/ SOLOS E NUTRICAO MINERAL DE PLANTAS"
## [20] "GENETICA E MELHORAMENTO"                                           
## [21] "GENETICA E MELHORAMENTO"                                           
## [22] "MESTRADO EM ESTATISTICA APLICADA E BIOMETRIA"                      
## [23] "MESTRADO EM GENETICA E MELHORAMENTO"                               
## [24] "METEOROLOGIA APLICADA"                                             
## [25] "POS GRADUACAO EM GENETICA E MELHORAMENTO/ DOUTORADO"
u <- c("MESTRADO", "DOUTORADO")
tb_aux <- x %>%
    str_replace_all(sprintf(".*(%s).*",
                            paste(u, collapse = "|")),
                    "\\1") %>%
    factor() %>%
    fct_other(keep = u,
              other_level = "Desconhecido") %>%
    fct_count() %>%
    rename(lev = "f") %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)))

my_pie(tb_aux, "Nível")

# my_bar(tb_aux, "Nível")
# my_dot(tb_aux, "Nível")
# my_stk(tb_aux, "Nível")

u <- c("GENETICA", "ESTATISTICA", "PRODUCAO VEGETAL","FITOPATOLOGIA")
tb_aux <- x %>%
    str_replace_all(sprintf(".*(%s).*",
                            paste(u, collapse = "|")),
                    "\\1") %>%
    factor() %>%
    fct_other(keep = u,
              other_level = "Outro") %>%
    fct_infreq() %>%
    fct_count() %>%
    rename(lev = "f") %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)))

# my_pie(tb_aux, "Programa")
my_bar(tb_aux, "Programa de Pós Graduação")

# my_stk(tb_aux, "Programa de Pós Graduação")

# 2. -------------------------------------------------------------------

nms[2]
## [1] "Sou usuário de R há ____ anos."
ggplot(tb, aes(x = V2)) +
    stat_ecdf() +
    geom_rug() +
    xlab(nms[2]) +
    ylab("Frequência relativa")

bks <- seq(0, max(tb$V2), by = 1)
ggplot(tb, aes(x = V2)) +
    geom_histogram(breaks = bks,
                   col = "black",
                   fill = "purple") +
        ylab("Frequência absoluta") +
    geom_rug() +
    stat_bin(breaks = bks,
             geom = "text",
             aes(label = ..count..),
             vjust = -0.5) +
    xlab(nms[2])

# 3. -------------------------------------------------------------------

i <- 3
nms[i]
## [1] "Minha frequência de uso do R é ____."
lvl <- sort(unique(tb[[i]]))[c(4, 2, 1, 3)]
txt <- nms[i]
tb_aux <- tb %>%
    count(lev = tb[[i]]) %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)),
           lev = fct_relevel(lev, lvl))

# my_pie(tb_aux, txt)
my_dot(tb_aux, txt)

# 4. -------------------------------------------------------------------

i <- 4
nms[i]
## [1] "O meu conhecimento de R estava ____ para acompanhar o Curso."
lvl <- sort(unique(tb[[i]]))[c(3, 1, 4, 2)]
txt <- nms[i]
tb_aux <- tb %>%
    count(lev = tb[[i]]) %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)),
           lev = fct_relevel(lev, lvl))

# my_pie(tb_aux, txt)
# my_bar(tb_aux, txt)
my_stk(tb_aux, txt)

# 5. -------------------------------------------------------------------

i <- 5
nms[i]
## [1] "O tempo necessário para praticar cada desafio foi ____ para eu desenvolver a solução."
lvl <- sort(unique(tb[[i]]))[c(1, 2, 3)]
txt <- nms[i]
tb_aux <- tb %>%
    count(lev = tb[[i]]) %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)),
           lev = fct_relevel(lev, lvl))

my_pie(tb_aux, txt)

# my_bar(tb_aux, txt)

# 6. -------------------------------------------------------------------

i <- 6
nms[i]
## [1] "A duração do Curso (20 horas) foi ____ para cobrir o conteúdo e praticar."
lvl <- sort(unique(tb[[i]]))[c(1, 2, 3)]
txt <- nms[i]
tb_aux <- tb %>%
    count(lev = tb[[i]]) %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)),
           lev = fct_relevel(lev, lvl))

# my_pie(tb_aux, txt)
# my_bar(tb_aux, txt)
my_stk(tb_aux, txt)

# 7. -------------------------------------------------------------------

i <- 7
nms[i]
## [1] "O Curso com este conteúdo deveria ter  duração de ____ horas."
lvl <- as.character(sort(unique(tb[[i]])))
txt <- nms[i]
tb_aux <- tb %>%
    count(lev = tb[[i]]) %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)),
           lev = fct_relevel(factor(lev), lvl))

# my_pie(tb_aux, txt)
my_bar(tb_aux, txt)

# 8. -------------------------------------------------------------------

i <- 8
nms[i]
## [1] "Meu aproveitamento do conteúdo do Curso foi ____ do que eu gostaria."
lvl <- sort(unique(tb[[i]]))[c(1, 3, 2)]
txt <- nms[i]
tb_aux <- tb %>%
    count(lev = tb[[i]]) %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)),
           lev = fct_relevel(lev, lvl))

my_pie(tb_aux, txt)

# 9. -------------------------------------------------------------------

i <- 9
nms[i]
## [1] "O conteúdo coberto no Curso foi ___ do que eu esperava."
lvl <- sort(unique(tb[[i]]))[c(2, 1)]
txt <- nms[i]
tb_aux <- tb %>%
    count(lev = tb[[i]]) %>%
    mutate(label = sprintf("%d (%0.1f%%)", n, 100 * n/sum(n)),
           lev = fct_relevel(lev, lvl))

my_pie(tb_aux, txt)

# 10. ------------------------------------------------------------------

nms[10]
## [1] "Eu gostaria de fazer um próximo Curso de R com esse instrutor sobre ____."
tb_aux <- tb[[10]] %>%
    str_replace_all(pattern = ", ([[:upper:]])",
                    replacement = ";\\1") %>%
    str_split(pattern = ";") %>%
    flatten_chr() %>%
    fct_count() %>%
    mutate(lev =
               {
                   as.character(.$f) %>%
                       map(strwrap, width = 15) %>%
                       map_chr(str_c, collapse = "\n") %>%
                       factor()
               },
           lev = fct_reorder(lev, n),
           label = sprintf("%d (%0.1f%%)", n, 100 * n/nrow(tb)))

ggplot(tb_aux,
       aes(x = lev, y = n)) +
    geom_col(color = "black", fill = "purple") +
    xlab("Cursos a serem realizados") +
    ylab("Frequência absoluta") +
    geom_text(mapping = aes(label = label),
              vjust = 0,
              nudge_y = 0.2)

# 11. ------------------------------------------------------------------

nms[11]
## [1] "Comentários, sugestões & reclamações"
x <- tb[[11]]
x <- x[order(nchar(x))]

comm <- x %>%
    str_c(1:length(.), ., sep = ". ") %>%
    map(strwrap, width = 60, simplify = TRUE)

# # Questões do questionário.
# for (i in comm) {
#     cat(i, sep = "\n")
#     cat("\n")
# }
comm %>%
    map_chr(str_c, collapse = " ") %>%
    str_c("  ", .) %>%
    cat(sep = "\n")
  1. .
  2. .
  3. Não há
  4. ótimo curso
  5. Muito bom o curso.
  6. sugiro um curso do Rbásico.
  7. O curso foi muito didático e produtivo.
  8. Talvez fornecer um apostila sobre o conteúdo
  9. Parabéns pela sua didática e conhecimento ao R.
  10. A didática do curso, teórica e prática, foi ótima.
  11. A questão foi apenas o tempo para os alunos praticarem.
  12. O curso foi de grande proveito, poderia voltar mais vezes
  13. Curso muito bom, didático. Gostaria de um curso sobre Machine Learning
  14. Gostei da didática, talvez uma apostila online com os scripts para ir estudando e se preparando pros dias seguintes
  15. Foi um curso ótimo, mas acho que tivesse sido bom um maior tempo para poder acompanhar melhor, mas isso não afeta a qualidade do curso.
  16. O único ponto que poderia contribuir para um melhor entendimento/desempenho do curso seria o fornecimento do material anteriormente ao curso.
  17. Gostaria de um curso bem básico sobre o RStudio, pois meu contato é bem pouco e tenho muita vontade aprimorar meus conhecimentos sobre o programa.
  18. Poderia ter tido um material preliminar, para acompanharmos e mais tempo para resolver as questões. Na parte do ggplot principalmente foi muito rápido.
  19. O curso foi muito bom, no entanto o meu conhecimento a respeito do assunto ainda é bastante inferior. Gostaria que fosse oferecido o curso do R básico.
  20. Excelente curso, mas poderia passar um pouco mais devagar pelos exercícios. Além disso, poderia gastar um pouco mais de tempo com exercícios de gráficos no ggplot.
  21. Seria interessante se tivesse mais tempo entre as aulas para a pratica ser realizada em casa, uma vez que no meu ponto de vista o aprendizado é adquirido com a prática.
  22. O conteúdo do curso é bastante interessante. Acredito que deva disponibilizar o script antes do início do curso, pois facilitaria o acompanhamento dos exercícios ao longo do curso.
  23. O ministrante tem muito domínio do conteúdo e uso do programa R, além de ótima didática. Sugiro mais exemplos práticos na área de melhoramento para tornar mais fácil e visual o entendimento de cada atividade.
  24. O curso abordou muito bem os temas, talvez uma sugestão, eu esperava um pouco mais na questão de gráficos, de como alterar fontes, resolução para poder ficar de acordo com o que as revistas pedem,assim como extrair eles
  25. Apesar do meu baixo conhecimento com os pacotes R, tive grande aproveitamento no curso, todas atividades muito bem explicadas e tive um grande crescimento profissionalmente. Parabéns ao GenMelhor pela organização e pelo professor Walves por ter ministrado o curso.
25px

Licença Creative Commons 4.0

Este conteúdo está disponível por meio da Licença Creative Commons 4.0