Commit 303316ff authored by Miguel Guerrero's avatar Miguel Guerrero

atualiza caminhos de arquivos para leitura de dados e melhora a legibilidade do código

parent a9f6235f
......@@ -8,56 +8,57 @@ library(arrow)
# carrega caminhos para dados
# path_ncm <- file.path(
# Sys.getenv("general"),
# "Bases",
# "correlacoes",
# "mercosul",
# "output",
# "correlacao_completa_ncm.xlsx"
# )
path_ncm <- "correlacao_completa_ncm.xlsx"
# path_ncm_detalhada <- file.path(
# Sys.getenv("general"),
# "Bases",
# "correlacoes",
# "mercosul",
# "output",
# "correlacao_completa_ncm_detalhada.xlsx"
# )
path_ncm_detalhada <- "correlacao_completa_ncm_detalhada.xlsx"
# caminho correlacao normal
path_ncm <- file.path(
Sys.getenv("general"),
"Bases",
"correlacoes",
"mercosul",
"output",
"correlacao_completa_ncm.xlsx"
)
correlacao_completa_ncm_mercosul <- read_xlsx(path_ncm, guess_max = 1e6) # agora
# caminho correlacao expandida
path_ncm_detalhada <- file.path(
Sys.getenv("general"),
"Bases",
"correlacoes",
"mercosul",
"output",
"correlacao_completa_ncm_detalhada.xlsx"
)
# Leitura de correlacao expandida
correlacao_ncm_detalhada <- read_xlsx(path_ncm_detalhada, guess_max = 1e6)
# funcao para obter linhas com mudancas de codigo em cada revisao NCM
filtra_mudancas <- function(x, padrao) {
x |>
select(matches(padrao)) |>
x |>
select(matches(padrao)) |>
filter(
# seleciona as linhas que tem algum valor diferente de NA com exceção
# de dados na primeira coluna
if_any(-1, ~ !is.na(.))
) |>
) |>
# cria uma coluna preenchendo-a com a primeira informação não NA da
# direita para a esquerda
mutate(!!padrao := do.call(coalesce, rev(as.list(across(-1))))) |>
mutate(!!padrao := do.call(coalesce, rev(as.list(across(-1))))) |>
select(
ncm_original = 1,
last_col()
) |>
) |>
distinct()
}
# cria lista de nomes para usar como input em filtra_mudancas
nomes_para_funcao <- names(correlacao_ncm_detalhada) |>
str_extract("NCM_\\d{4}") |>
nomes_para_funcao <- names(correlacao_ncm_detalhada) |>
str_extract("NCM_\\d{4}") |>
unique()
# obtem lista com as ncms originais das revisoes
ncms_originais <- nomes_para_funcao |>
ncms_originais <- nomes_para_funcao |>
map(~ filtra_mudancas(correlacao_ncm_detalhada, padrao = .x))
names(ncms_originais) <- nomes_para_funcao |>
......@@ -75,59 +76,68 @@ dados_gerados_ncms_originais <- readRDS("dados_gerados/ncms_originais.rds")
dados_gerados_ncms_originais <- dados_gerados_ncms_originais[[tamanho_lista]]
# compara coluna ncm original de agora com anterior
# indica que codigos que não estavam na revisão, original apareceram agora
# indica que codigos que não estavam na revisão original apareceram agora. Isso é
# importante pois alguns códigos podem ter sido alterados agora ou podem ter sido esquecidos
# e não inseridos anteriorermente
setdiff(
ultima_revisao$ncm_original,
dados_gerados_ncms_originais$ncm_original
ultima_revisao$ncm_original,
dados_gerados_ncms_originais$ncm_original
)
# obter nome da segunda coluna da ultima revisao
nome_segunda_coluna <- ultima_revisao |>
select(-ncm_original) |>
names()
nome_segunda_coluna <- ultima_revisao |>
select(-ncm_original) |>
names()
# compara coluna de mudanças dentro da revisão. Indica códigos que
# apareceram agora em relação ao ultimo arquivo
# apareceram agora em relação ao ultimo arquivo. Aqui vale a pena conferir se
# todos os códigos que aparececem foram de fato criados. Vale a pena conferir se todos os
# códigos criados (olhar nas resoluções) aparecem dentros os códigos seguintes.
setdiff(
ultima_revisao[[nome_segunda_coluna]],
dados_gerados_ncms_originais[[nome_segunda_coluna]]
ultima_revisao[[nome_segunda_coluna]],
dados_gerados_ncms_originais[[nome_segunda_coluna]]
)
# carrega dados da tec
tec <- read_xlsx("tec_oficial.xlsx", guess_max = 1e6)
tec <- read_xlsx(Sys.getenv("tec"), guess_max = 1e6)
# observa mudanças nos códigos ncm de um arquivo anterior
# e verifica se tem alguma ncm que não está mais na tec vigente.
dados_gerados_ncms_originais |>
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\.")) |>
left_join(tec, by = "ncm") |>
distinct() |>
filter(is.na(descricao_tec)) |>
pull(ncm)
# Se um código aparecer esse código deve ter sido alterado. Conferir.
dados_gerados_ncms_originais |>
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\.")) |>
left_join(tec, by = "ncm") |>
distinct() |>
filter(is.na(descricao_tec)) |>
pull(ncm)
#####################################
# compara codigos ncm da tabela de correlacao ncm de agora
# compara codigos ncm da tabela de correlacao ncm de agora
# e verifica se todos estão presentes na tec vigente.
correlacao_completa_ncm_mercosul <- read_xlsx(path_ncm, guess_max = 1e6) # agora
correlacao_completa <- correlacao_completa_ncm_mercosul |>
distinct() |>
rename_with(~str_to_upper(.x)) |>
correlacao_completa <- correlacao_completa_ncm_mercosul |>
distinct() |>
rename_with(~ str_to_upper(.x)) |>
tidyr::drop_na()
correlacao_ncm <- correlacao_completa |>
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\."))
correlacao_ncm <- correlacao_completa |>
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\."))
correlacao_ncm |>
select(ncm) |>
distinct()
# contagem de códigos únicos no arquivo com a última revisão
correlacao_ncm |>
select(ncm) |>
distinct()
# contagem linhas tec
nrow(tec)
tec |>
filter(ncm %in% correlacao_ncm$NCM_2022)
# verifica se numero de linhas é igual ao número de linhas da tec
tec |>
filter(ncm %in% correlacao_ncm[["ncm"]] |> unique()) |>
nrow()
# compara codigos ncm da tabela correlação ncm antiga e
......@@ -135,18 +145,21 @@ tec |>
correlacao_ncm_antes <- read_parquet("dados_gerados/dataset_ncm.parquet") # antes
correlacao_ncm_antes <- correlacao_ncm_antes |>
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\."))
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\."))
tec |>
filter(ncm %in% correlacao_ncm_antes$ncm)
# um número menor de linhas indica que alguns códigos saíram da tabela de correlação e não estão mais presentes na tec vigente.
tec |>
filter(ncm %in% unique(correlacao_ncm_antes$ncm)) |>
nrow()
# verifica codigos que entraram na tabela correlacao ncm
setdiff(correlacao_ncm$ncm, correlacao_ncm_antes$ncm)
# compara com codigos ncms originais antes e depois
# compara com codigos ncms originais antes e depois. Os códigos da linha acima devem
# bater com a linha abaixo (sem pontos)
setdiff(
ultima_revisao[[nome_segunda_coluna]],
dados_gerados_ncms_originais[[nome_segunda_coluna]]
ultima_revisao[[nome_segunda_coluna]],
dados_gerados_ncms_originais[[nome_segunda_coluna]]
)
# codigos que saíram da tabela de correlacao
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment