SEMANA 11 - Programação Funcional - Pacote dplyr

Gustavo Eduardo Marcatti

Arrumar dados e fazer análises com dplyr

1. criando objetos intermediários

#********************************************#
#----- Definir os aprovados do concurso -----#
set.seed(10)
codigo_geral <- tibble(codigo = seq(5001, 5050, 1)) #5001:5050
nota_curriculo <- mutate(codigo_geral, 
                         idade = round(runif(n(), 18, 60), 0),
                         valor_curriculo = round(runif(n(), 0, 10), 1))
apro_curriculo <- filter(nota_curriculo, valor_curriculo >= 6)
codigo_curriculo <- select(apro_curriculo, codigo)
nota_escrita <- mutate(codigo_curriculo, 
                       valor_escrita= round(runif(n(), 0, 10), 1))
apro_escrita <- filter(nota_escrita, valor_escrita >= 6)
notas <- inner_join(apro_escrita, apro_curriculo, by = "codigo")
notas_medias <- mutate(notas, media = (valor_escrita + valor_curriculo) / 2)
notas_ord <- arrange(notas_medias, -media)
aprovados <- slice(notas_ord, 1:2)
aprovados
#********************************************#
#----- Análise dos aprovados ----------------#
notas_classe <- mutate(notas_medias, 
                       idade_classe = if_else(idade < 40, "classe1", "classe2"))
notas_group <- group_by(notas_classe, idade_classe)
func_media <- function(vetor) return(sum(vetor) / length(vetor))
avaliar <- summarise(notas_group, media_curriculo = mean(valor_curriculo),
                     media_escrita = mean(valor_escrita),
                     media_geral = func_media(media), n = n())
avaliar 

2. Usando tidyverse - o operador pipe %>%

#********************************************#
#----- Definir os aprovados do concurso -----#
library(tidyverse)
apro_curriculo <- tibble(codigo = seq(5001, 5050, 1)) %>%
   mutate(idade = round(runif(n(), 18, 60), 0),
          valor_curriculo = round(runif(n(), 0, 10), 1)) %>%
   filter(valor_curriculo >= 6)

notas <- apro_curriculo %>%
   select(codigo) %>%
   mutate(valor_escrita = round(runif(n(), 0, 10), 1)) %>%
   filter(valor_escrita >= 6) %>%
   inner_join(., apro_curriculo, by = "codigo") %>%
   mutate(media = (valor_escrita + valor_curriculo) / 2)

aprovados <- notas %>%
   arrange(-media) %>%
   slice(1:2)

aprovados
#********************************************#
#----- Análise dos aprovados ----------------#
avaliar <- notas %>%
   mutate(idade_classe = if_else(idade < 40, "classe1", "classe2")) %>%
   group_by(idade_classe) %>%
   summarise(media_curriculo = mean(valor_curriculo),
             media_escrita = mean(valor_escrita),
             media_geral = func_media(media), n = n())

avaliar