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) ...@@ -8,56 +8,57 @@ library(arrow)
# carrega caminhos para dados # carrega caminhos para dados
# path_ncm <- file.path( # caminho correlacao normal
# Sys.getenv("general"), path_ncm <- file.path(
# "Bases", Sys.getenv("general"),
# "correlacoes", "Bases",
# "mercosul", "correlacoes",
# "output", "mercosul",
# "correlacao_completa_ncm.xlsx" "output",
# ) "correlacao_completa_ncm.xlsx"
)
path_ncm <- "correlacao_completa_ncm.xlsx"
correlacao_completa_ncm_mercosul <- read_xlsx(path_ncm, guess_max = 1e6) # agora
# path_ncm_detalhada <- file.path(
# Sys.getenv("general"), # caminho correlacao expandida
# "Bases", path_ncm_detalhada <- file.path(
# "correlacoes", Sys.getenv("general"),
# "mercosul", "Bases",
# "output", "correlacoes",
# "correlacao_completa_ncm_detalhada.xlsx" "mercosul",
# ) "output",
"correlacao_completa_ncm_detalhada.xlsx"
path_ncm_detalhada <- "correlacao_completa_ncm_detalhada.xlsx" )
# Leitura de correlacao expandida
correlacao_ncm_detalhada <- read_xlsx(path_ncm_detalhada, guess_max = 1e6) correlacao_ncm_detalhada <- read_xlsx(path_ncm_detalhada, guess_max = 1e6)
# funcao para obter linhas com mudancas de codigo em cada revisao NCM # funcao para obter linhas com mudancas de codigo em cada revisao NCM
filtra_mudancas <- function(x, padrao) { filtra_mudancas <- function(x, padrao) {
x |> x |>
select(matches(padrao)) |> select(matches(padrao)) |>
filter( filter(
# seleciona as linhas que tem algum valor diferente de NA com exceção # seleciona as linhas que tem algum valor diferente de NA com exceção
# de dados na primeira coluna # de dados na primeira coluna
if_any(-1, ~ !is.na(.)) if_any(-1, ~ !is.na(.))
) |> ) |>
# cria uma coluna preenchendo-a com a primeira informação não NA da # cria uma coluna preenchendo-a com a primeira informação não NA da
# direita para a esquerda # 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( select(
ncm_original = 1, ncm_original = 1,
last_col() last_col()
) |> ) |>
distinct() distinct()
} }
# cria lista de nomes para usar como input em filtra_mudancas # cria lista de nomes para usar como input em filtra_mudancas
nomes_para_funcao <- names(correlacao_ncm_detalhada) |> nomes_para_funcao <- names(correlacao_ncm_detalhada) |>
str_extract("NCM_\\d{4}") |> str_extract("NCM_\\d{4}") |>
unique() unique()
# obtem lista com as ncms originais das revisoes # 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)) map(~ filtra_mudancas(correlacao_ncm_detalhada, padrao = .x))
names(ncms_originais) <- nomes_para_funcao |> names(ncms_originais) <- nomes_para_funcao |>
...@@ -75,59 +76,68 @@ dados_gerados_ncms_originais <- readRDS("dados_gerados/ncms_originais.rds") ...@@ -75,59 +76,68 @@ dados_gerados_ncms_originais <- readRDS("dados_gerados/ncms_originais.rds")
dados_gerados_ncms_originais <- dados_gerados_ncms_originais[[tamanho_lista]] dados_gerados_ncms_originais <- dados_gerados_ncms_originais[[tamanho_lista]]
# compara coluna ncm original de agora com anterior # 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( setdiff(
ultima_revisao$ncm_original, ultima_revisao$ncm_original,
dados_gerados_ncms_originais$ncm_original dados_gerados_ncms_originais$ncm_original
) )
# obter nome da segunda coluna da ultima revisao # obter nome da segunda coluna da ultima revisao
nome_segunda_coluna <- ultima_revisao |> nome_segunda_coluna <- ultima_revisao |>
select(-ncm_original) |> select(-ncm_original) |>
names() names()
# compara coluna de mudanças dentro da revisão. Indica códigos que # 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( setdiff(
ultima_revisao[[nome_segunda_coluna]], ultima_revisao[[nome_segunda_coluna]],
dados_gerados_ncms_originais[[nome_segunda_coluna]] dados_gerados_ncms_originais[[nome_segunda_coluna]]
) )
# carrega dados da tec # 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 # 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. # e verifica se tem alguma ncm que não está mais na tec vigente.
dados_gerados_ncms_originais |> # Se um código aparecer esse código deve ter sido alterado. Conferir.
rename(ncm = all_of(nome_segunda_coluna)) |> dados_gerados_ncms_originais |>
mutate(ncm = str_remove_all(ncm, "\\.")) |> rename(ncm = all_of(nome_segunda_coluna)) |>
left_join(tec, by = "ncm") |> mutate(ncm = str_remove_all(ncm, "\\.")) |>
distinct() |> left_join(tec, by = "ncm") |>
filter(is.na(descricao_tec)) |> distinct() |>
pull(ncm) 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. # 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 |> correlacao_completa <- correlacao_completa_ncm_mercosul |>
distinct() |> distinct() |>
rename_with(~str_to_upper(.x)) |> rename_with(~ str_to_upper(.x)) |>
tidyr::drop_na() tidyr::drop_na()
correlacao_ncm <- correlacao_completa |> correlacao_ncm <- correlacao_completa |>
rename(ncm = all_of(nome_segunda_coluna)) |> rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\.")) mutate(ncm = str_remove_all(ncm, "\\."))
correlacao_ncm |> # contagem de códigos únicos no arquivo com a última revisão
select(ncm) |> correlacao_ncm |>
distinct() select(ncm) |>
distinct()
# contagem linhas tec
nrow(tec)
tec |> # verifica se numero de linhas é igual ao número de linhas da tec
filter(ncm %in% correlacao_ncm$NCM_2022) tec |>
filter(ncm %in% correlacao_ncm[["ncm"]] |> unique()) |>
nrow()
# compara codigos ncm da tabela correlação ncm antiga e # compara codigos ncm da tabela correlação ncm antiga e
...@@ -135,18 +145,21 @@ tec |> ...@@ -135,18 +145,21 @@ tec |>
correlacao_ncm_antes <- read_parquet("dados_gerados/dataset_ncm.parquet") # antes correlacao_ncm_antes <- read_parquet("dados_gerados/dataset_ncm.parquet") # antes
correlacao_ncm_antes <- correlacao_ncm_antes |> correlacao_ncm_antes <- correlacao_ncm_antes |>
rename(ncm = all_of(nome_segunda_coluna)) |> rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\.")) mutate(ncm = str_remove_all(ncm, "\\."))
tec |> # 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.
filter(ncm %in% correlacao_ncm_antes$ncm) tec |>
filter(ncm %in% unique(correlacao_ncm_antes$ncm)) |>
nrow()
# verifica codigos que entraram na tabela correlacao ncm # verifica codigos que entraram na tabela correlacao ncm
setdiff(correlacao_ncm$ncm, correlacao_ncm_antes$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( setdiff(
ultima_revisao[[nome_segunda_coluna]], ultima_revisao[[nome_segunda_coluna]],
dados_gerados_ncms_originais[[nome_segunda_coluna]] dados_gerados_ncms_originais[[nome_segunda_coluna]]
) )
# codigos que saíram da tabela de correlacao # 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