data-raw/drafts.R

library(magrittr)
pesqEle::cities
pesqEle::pesq_download_cities(head(pesqEle::cities))

datas <- seq(Sys.Date(), as.Date("2016-01-01"), by = -1)
datas <- purrr::set_names(datas, datas)
res <- pesq_download(datas)

# ------------------------------------------------------------------------------

files_main <- fs::dir_ls("data-raw/html", regexp = "pesqEle")
files_details <- fs::dir_ls("data-raw/html", regexp = "details")
pesq_main <- pesq_parse_main(files_main)
pesq_details <- pesq_parse_details(files_details)


pesq_details

readr::write_rds(pesq_main, "data-raw/pesq_main.rds")
readr::write_rds(pesq_details, "data-raw/pesq_details.rds")

pesq_main_tidy <- pesq_main %>%
  dplyr::filter(numero_de_identificacao != 'Nenhum registro encontrado!') %>%
  purrr::set_names(c('arq', 'id', 'eleicao', 'empresa', 'dt_reg',
                     'abrangencia', 'acoes')) %>%
  dplyr::select(-acoes) %>%
  tidyr::separate(abrangencia, c('uf', 'muni'), sep = ' / ', fill = "right") %>%
  dplyr::mutate(arq_id = stringr::str_extract(arq, '[A-Z]{2}_[0-9]+')) %>%
  dplyr::distinct(arq_id, id, .keep_all = TRUE)

# ------------------------------------------------------------------------------

re_origem <- "(?<=Origem do Recurso: )([a-zA-Z()\\s]+)"
pesq_details_tidy <- pesq_details %>%
  dplyr::mutate(key = stringr::str_squish(key)) %>%
  dplyr::select(-result) %>%
  tidyr::spread(key, val) %>%
  janitor::clean_names() %>%
  purrr::set_names(c("arq", "cargo", "contratante_propria_empresa",
              "contratantes", "sobre_municipio",
              "dt_divulgacao", "dt_inicio",
              "dt_registro", "dt_termino",
              "eleicao", "empresa_contratada",
              "n_entrevistados", "estatistico_responsavel",
              "metodologia_pesquisa", "id",
              "pagantes", "plano_amostral", "estatistico_registro",
              "verificacao", "valor")) %>%
  dplyr::mutate_at(dplyr::vars(dplyr::starts_with("dt_")),
                   dplyr::funs(lubridate::dmy)) %>%
  dplyr::mutate(n_entrevistados = as.numeric(n_entrevistados),
                valor = readr::parse_number(valor, locale = readr::locale(
                  decimal_mark = ",", grouping_mark = "."
                ))) %>%
  dplyr::mutate(contratantes = rslp:::remove_accents(contratantes)) %>%
  dplyr::mutate(preco_por_entrevistado = valor / n_entrevistados,
                origem = stringr::str_extract(contratantes, re_origem),
                origem = stringr::str_remove_all(origem, "[^a-zA-Z ]"),
                origem = stringr::str_squish(origem)) %>%
  replace_na(list(origem = "Vazio")) %>%
  mutate(contratante_propria_empresa = if_else(contratante_propria_empresa == "N\u00e3o", "N\u00e3o", "Sim")) %>%
  mutate(estatistico_registro = str_extract(estatistico_registro, "[0-9]+")) %>%
  mutate(arq_id = str_extract(arq, "([0-9A-Z_)]+)(?=_)")) %>%
  mutate(criterio_origem = origem == "Recursos proprios" &
           contratante_propria_empresa == "Sim") %>%
  inner_join(select(pesq_main_tidy, -arq), c("id", "arq_id")) %>%
  group_by(estatistico_registro) %>%
  mutate(empresas_por_estatistico = n_distinct(empresa), n = n()) %>%
  ungroup()

#-------------------------------------------------------------------------------

library(tidyverse)
library(abjutils)

# bases de dados originais -----------------------------------------------------
pesq_details <- readr::read_rds("~/Downloads/pesq_details (1).rds")
pesq_main <- readr::read_rds("~/Downloads/pesq_main (1).rds")
data(dados_muni, package = "abjData")

# municipios com latitude e longitude ------------------------------------------
d_latlon <- dados_muni %>%
  mutate(municipio = toupper(rm_accent(municipio)))

# bases de dados originais -----------------------------------------------------
pesq_main_tidy <- pesq_main %>%
  filter(numero_de_identificacao != 'Nenhum registro encontrado!') %>%
  set_names(c('arq', 'id', 'empresa', 'id_stat', 'nm_stat',
              'dt_reg', 'abrangencia', 'acoes')) %>%
  select(-acoes) %>%
  separate(abrangencia, c('uf', 'muni'),
           sep = ' / ', fill = "right") %>%
  mutate(nm_stat = rm_accent(toupper(nm_stat))) %>%
  mutate(arq_id = str_extract(arq, "([0-9A-Z_)]+)(?=\\.)")) %>%
  distinct(arq_id, id, .keep_all = TRUE)

# express\u00f5es regulares ---------------------------------------------------------
re_origem <- "(?<=Origem do Recurso: )([a-zA-Z()\\s]+)"
re_cnpj <- "(?<=CNPJ:\\s{1,5})([0-9]+)"

clean_emp <- function(x) {
  re <- "(?<=CNPJ:\\s{1,5}[0-9]{14}\\s{1,3}-)((.|\n)+)"
  x %>%
    str_extract(re) %>%
    str_squish() %>%
    str_to_upper()
}

# base de dados arrumada -------------------------------------------------------
pesq_details_tidy <- pesq_details %>%
  mutate(key = str_squish(key)) %>%
  spread(key, val) %>%
  select(-result) %>%
  janitor::clean_names() %>%
  set_names(c("arq",
              "cargo",
              "contratante_propria_empresa",
              "contratantes",
              "sobre_municipio",
              "dt_divulgacao",
              "dt_inicio",
              "dt_registro",
              "dt_termino",
              "eleicao",
              "empresa_contratada",
              "n_entrevistados",
              "estatistico_responsavel",
              "metodologia_pesquisa",
              "id",
              "pagantes",
              "plano_amostral",
              "estatistico_registro",
              "verificacao",
              "valor")) %>%
  mutate_at(vars(starts_with("dt_")), funs(lubridate::dmy)) %>%
  mutate(n_entrevistados = as.numeric(n_entrevistados),
         valor = parse_number(valor, locale = locale(
           decimal_mark = ",", grouping_mark = "."
         ))) %>%
  mutate(contratantes = rslp:::remove_accents(contratantes)) %>%
  mutate(preco_por_entrevistado = valor / n_entrevistados,
         origem = str_extract(contratantes, re_origem),
         origem = str_remove_all(origem, "[^a-zA-Z ]"),
         origem = str_squish(origem)) %>%
  replace_na(list(origem = "Vazio")) %>%
  mutate(contratante_propria_empresa = if_else(
    contratante_propria_empresa == "N\u00e3o", "N\u00e3o", "Sim")) %>%
  mutate(estatistico_registro = str_extract(estatistico_registro, "[0-9]+")) %>%
  mutate(arq_id = str_extract(arq, "([0-9A-Z_)]+)(?=_)")) %>%
  mutate(criterio_origem = origem == "Recursos proprios" &
           contratante_propria_empresa == "Sim") %>%
  # tudo o que nao bateu \u00e9 lixo - dado duplicado
  inner_join(select(pesq_main_tidy, -arq), c("id", "arq_id")) %>%
  group_by(estatistico_registro) %>%
  mutate(empresas_por_estatistico = n_distinct(empresa), n = n()) %>%
  ungroup() %>%
  mutate(cnpj = str_extract(empresa_contratada, re_cnpj),
         emp_nm = clean_emp(empresa_contratada)) %>%
  group_by_at(vars(-arq, -arq_id, -id)) %>%
  slice(1) %>%
  ungroup()

# base de dados para visualizacao ----------------------------------------------
# nomes
clean_stat_nm <- function(x) {
  x %>%
    str_remove_all("[^A-Z0-9 .-]") %>%
    str_replace_all(" DE | DOS | DA | DAS | DO ", " ") %>%
    str_squish()
}
clean_stat_id <- function(x) {
  x %>%
    str_extract("[0-9]{3,}")
}
id_fonema <- function(stat_id, stat_nm) {
  stat_nm <- clean_stat_nm(stat_nm)
  stat_id <- clean_stat_id(stat_id)
  fonema <- SoundexBR::soundexBR(stat_nm)
  stringr::str_glue("{stat_id}_{fonema}")
}

# ------------------------------------------------------------------------------

pesqEle2018 <- pesq_details_tidy %>%
  rowid_to_column("id_seq") %>%
  select(
    # informa\u00e7\u00f5es de identifica\u00e7\u00e3o
    id_seq,
    id_pesq = id,
    id_muni = arq_id,
    # informa\u00e7\u00f5es b\u00e1sicas
    info_uf = uf,
    info_muni = muni,
    info_election = eleicao,
    info_position = cargo,
    # informa\u00e7\u00f5es da empresa
    comp_nm = emp_nm,
    comp_cnpj = cnpj,
    comp_contract_same = contratante_propria_empresa,
    # informa\u00e7\u00f5es do estat\u00edstico respons\u00e1vel
    stat_id = id_stat,
    stat_nm = nm_stat,
    # informa\u00e7\u00f5es da pesquisa
    pesq_n = n_entrevistados,
    pesq_val = valor,
    pesq_contractors = contratantes,
    pesq_origin = origem,
    pesq_same = criterio_origem,
    # datas
    dt_reg = dt_registro,
    dt_pub = dt_divulgacao,
    dt_start = dt_inicio,
    dt_end = dt_termino,
    # textos (nao serao usados)
    txt_verif = verificacao,
    txt_method = metodologia_pesquisa,
    txt_about = sobre_municipio,
    txt_plan = plano_amostral
  ) %>%
  filter(info_election == "Elei\u00e7\u00f5es Gerais 2018") %>%
  separate(id_pesq, c("info_uf", "temp"), "-", remove = FALSE) %>%
  select(-temp, -info_muni) %>%
  mutate(id_unico = id_fonema(stat_id, stat_nm))


write_rds(pesqEle2018, "pesqEle2018.rds", compress = "gz")




pesqEle2018 %>%
  separate(id_pesq, c("info_uf", "temp"), "-", remove = FALSE) %>%
  select(-temp, -info_muni) %>%
  print(n = 100)


  select(-starts_with("txt")) %>%
  # join com base de latitude e longitude
  mutate(info_muni = toupper(rm_accent(info_muni))) %>%
  mutate(info_muni = case_when(
    info_muni == 'PARATY' ~ 'PARATI',
    info_muni == 'MUQUEM DO SAO FRANCISCO' ~ 'MUQUEM DE SAO FRANCISCO',
    info_muni == 'MOGI MIRIM' ~ 'MOJI MIRIM',
    info_muni == 'PARAISO DAS AGUAS' ~ 'CHAPADAO DO SUL',
    info_muni == 'NAZARIA' ~ 'TERESINA',
    info_muni == 'QUINJINGUE' ~ 'QUIJINGUE',
    info_muni == 'ASSU' ~ 'ACU',
    info_muni == 'EMBU DAS ARTES' ~ 'EMBU',
    info_muni == 'FLORINEA' ~ 'FLORINIA',
    info_muni == 'BIRITIBA MIRIM' ~ 'BIRITIBA-MIRIM',
    info_muni == 'LAGOA DE ITAENGA' ~ 'LAGOA DO ITAENGA',
    info_muni == 'SAO FELIPE DO OESTE' ~ 'SAO FELIPE DOESTE',
    info_muni == 'ALVORADA DO OESTE' ~ 'ALVORADA DOESTE',
    info_muni == 'SAO MIGUEL DO GOSTOSO' ~ 'SAO MIGUEL',
    info_muni == 'BOA SAUDE' ~ 'LAGOA NOVA',
    info_muni == 'MACHADINHO DO OESTE' ~ 'MACHADINHO DOESTE',
    info_muni == 'ESPIGAO DO OESTE' ~ 'ESPIGAO DOESTE',
    info_muni == 'SANTA LUZIA DO OESTE' ~ 'SANTA LUZIA DOESTE',
    info_muni == 'ALTA FLORESTA DO OESTE' ~ 'ALTA FLORESTA DOESTE',
    info_muni == 'NOVA BRASILANDIA DO OESTE' ~ 'NOVA BRASILANDIA DOESTE',
    info_muni == 'OLHO DAGUA DO BORGES' ~ 'OLHO-DAGUA DO BORGES',
    info_muni == 'POXOREU' ~ 'POXOREO',
    TRUE ~ info_muni
  )) %>%
  left_join(d_latlon, c("info_uf" = "uf", "info_muni" = "municipio")) %>%
  select(-pesq_contractors)


pesqEle <- pesqEle %>%
  mutate(id_unico = id_fonema(stat_id, stat_nm)) %>%
  group_by(id_unico) %>%
  mutate(stat_nm_clean = first(stat_nm)) %>%
  ungroup()

pesqEle2018 <- pesqEle %>%
  filter()


write_rds(pesqEle, "data-raw/pesqEle.rds", compress = "bz2")
conre3/pesqEle documentation built on June 25, 2020, 5:28 a.m.