library(magrittr)
library(ggplot2)
# Exercício 2 -------------------------------------------------------------
path_excel <- "dados/dados_consultoria.xlsx"
# Lê os nomes das abas do excel, no caso 3.
abas <- readxl::excel_sheets(path_excel)
#> Error: `path` does not exist: 'dados/dados_consultoria.xlsx'
# Função que lê uma aba.
le_uma_aba <- function(aba) {
readxl::read_excel(path_excel, sheet = aba, skip = 1) %>%
dplyr::mutate(cidade = aba)
}
# Por exemplo...
le_uma_aba("Osasco")
#> Error: `path` does not exist: 'dados/dados_consultoria.xlsx'
le_uma_aba("Ourinhos")
#> Error: `path` does not exist: 'dados/dados_consultoria.xlsx'
le_uma_aba("Campos do Jordão")
#> Error: `path` does not exist: 'dados/dados_consultoria.xlsx'
# Usando o purrr, pode ler todas as abas
indicadores <- purrr::map_dfr(abas, le_uma_aba)
#> Error in map(.x, .f, ...): object 'abas' not found
# Essa é boa.
# Dizendo à função readr que no meu locale vírgula é marcação de decimal.
loc <- readr::locale(decimal_mark = ",")
# Tidyando.
indicadores_limpo <- indicadores %>%
# limpa nomes das colunas
janitor::clean_names() %>%
dplyr::mutate(
# porcentagem de texto para número
dplyr::across(
dplyr::starts_with("percent_"),
readr::parse_number, locale = loc
) / 100,
# ano mes para data
data = lubridate::ymd(paste0(ano, mes, "01", sep = "-")),
# id para texto
id = as.character(id)
) %>%
# retira "percent", numeros e underlines dos nomes
dplyr::rename_with(~stringr::str_remove_all(., "percent|[0-9_]"))
#> Error in janitor::clean_names(.): object 'indicadores' not found
# Exercício 2 - Sobre os IDs, o cliente informou que deveria ter apenas uma
# linha para cada trinca (id-ano-mes).
# Por conta de uma inconsistência, poderia acontecer de virem duas ou mais
# linhas para o mesma trinca (id-ano-mes).
# O correto é ter apenas uma linha apenas. Eles disseram que a linha com o
# maior valor de agendamento tem mais chance de ser a correta.
# a) retire as duplicatas.
# b) quais combinações de id-ano-mês nós temos?
# Resolução. --------------------------------------------------------------
# No objeto dupes, nas linhas 7 a 10 e 22 e 23, todos agendamentos valem 0, mas
# as outras colunas têm valores diferentes. Como resolvo isso? Qual delas escolho?
# Há alguma função para fazer isso?
dupes <- indicadores_limpo %>%
dplyr::mutate(mes = str_to_title(mes)) %>% # Uniformizando o nome dos meses.
janitor::get_dupes(id, ano, mes)
#> Error in dplyr::mutate(., mes = str_to_title(mes)): object 'indicadores_limpo' not found
Created on 2021-05-17 by the reprex package (v2.0.0)