Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dados-rastreador
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages
Packages
Container Registry
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Camex Público
dados-rastreador
Commits
c7b35a43
Commit
c7b35a43
authored
Jan 19, 2026
by
Miguel Guerrero
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add script gera_correlacoes
parent
fefbcb47
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
341 additions
and
0 deletions
+341
-0
.gitignore
.gitignore
+4
-0
dados-rastreador.Rproj
dados-rastreador.Rproj
+13
-0
scripts/gera_correlacoes.R
scripts/gera_correlacoes.R
+324
-0
No files found.
.gitignore
0 → 100644
View file @
c7b35a43
.Rproj.user
.Rhistory
.RData
.Ruserdata
dados-rastreador.Rproj
0 → 100644
View file @
c7b35a43
Version: 1.0
RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default
EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8
RnwWeave: Sweave
LaTeX: pdfLaTeX
scripts/gera_correlacoes.R
0 → 100644
View file @
c7b35a43
library
(
dplyr
)
library
(
tidyselect
)
library
(
stringr
)
library
(
nanoparquet
)
library
(
tidyr
)
library
(
readxl
)
library
(
purrr
)
# carrega caminhos para dados
path_ncm
<-
file.path
(
Sys.getenv
(
"general"
),
"Bases"
,
"correlacoes"
,
"mercosul"
,
"output"
,
"correlacao_completa_ncm.Rda"
)
path_ncm_detalhada
<-
file.path
(
Sys.getenv
(
"general"
),
"Bases"
,
"correlacoes"
,
"mercosul"
,
"output"
,
"correlacao_completa_ncm_detalhada.xlsx"
)
path_naladi_ncm
<-
file.path
(
Sys.getenv
(
"general"
),
"Bases"
,
"correlacoes"
,
"aladi"
,
"naladi_ncm"
,
"output"
,
"correlacao_naladi_ncm.Rda"
)
path_naladi_ncm_manual
<-
file.path
(
Sys.getenv
(
"general"
),
"Bases"
,
"correlacoes"
,
"aladi"
,
"naladi_ncm"
,
"correlacao_ncm_naladi_manual.xlsx"
)
path_naladi
<-
file.path
(
Sys.getenv
(
"general"
),
"Bases"
,
"correlacoes"
,
"aladi"
,
"naladi_naladi"
,
"output"
,
"correlacao_completa_naladi_ncmtracker.Rda"
)
path_descricoes
<-
file.path
(
Sys.getenv
(
"general"
),
"Bases"
,
"NCM_sh1996_a_sh2022"
,
"descricoes_ncm_sh.xlsx"
)
# Obter códigos que mudaram nas revisões ----------------------------------
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
))
|>
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
)))))
|>
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}"
)
|>
unique
()
# obtem lista com as ncms originais das revisoes
ncms_originais
<-
nomes_para_funcao
|>
map
(
~
filtra_mudancas
(
correlacao_ncm_detalhada
,
padrao
=
.x
))
names
(
ncms_originais
)
<-
nomes_para_funcao
|>
str_replace
(
"_"
,
" "
)
saveRDS
(
ncms_originais
,
"dados_gerados/ncms_originais.rds"
)
# Organiza dados da correlação NCM ----------------------------------------
load
(
path_ncm
)
correlacao_completa
<-
correlacao_completa_ncm_mercosul
|>
distinct
()
|>
rename_with
(
~
str_to_upper
(
.x
))
write_parquet
(
correlacao_completa
,
"dados_gerados/dataset_ncm.parquet"
)
# Organiza dados da correlação NCM Naladi ---------------------------------
load
(
path_naladi_ncm
)
naladi_ncm_manual
<-
read_xlsx
(
path_naladi_ncm_manual
)
correlacao_completa
<-
correlacao_naladi_ncm
|>
distinct
()
|>
rename_with
(
~
str_to_upper
(
.x
))
# obtem ultimo ano
colunas
<-
names
(
correlacao_completa
)
ano_max
<-
colunas
|>
str_extract
(
"[0-9]+"
)
|>
max
()
|>
unique
()
naladi_ncm_auto
<-
correlacao_completa
|>
select
(
contains
(
ano_max
))
|>
distinct
()
if
(
nrow
(
naladi_ncm_manual
)
>=
nrow
(
naladi_ncm_auto
))
{
naladi_ncm
<-
naladi_ncm_manual
}
else
{
naladi_ncm
<-
naladi_ncm_auto
}
naladi_ncm
|>
write_parquet
(
"dados_gerados/dataset_naladi_ncm.parquet"
)
# Organiza dados da correlação Naladi -------------------------------------
load
(
path_naladi
)
correlacao_completa
<-
correlacao_completa_naladi_naladi_ncmtracker
|>
# naladi 1983 tem 7 ou 8 digitos. os 8 digitos da naladi 1983 surgiram em 1992.
# como logo em seguida veio a naladi_1993 com 8 digitos, vamos
# descartar os codigos de 8 dígitos da naladi_1983.
# filter(nchar(naladi_1983) == 9) |> # 9 digitos equivale a 7 digitos se contarmos os pontos
distinct
()
|>
rename_with
(
~
str_to_upper
(
.x
))
|>
mutate
(
NALADI_1983
=
str_remove_all
(
NALADI_1983
,
"\\."
))
|>
mutate
(
NALADI_1983
=
str_c
(
str_sub
(
NALADI_1983
,
1
,
2
),
"."
,
str_sub
(
NALADI_1983
,
3
,
4
),
"."
,
str_sub
(
NALADI_1983
,
5
,
5
),
"."
,
str_sub
(
NALADI_1983
,
6
,
7
)
))
colunas
<-
names
(
correlacao_completa
)
write_parquet
(
correlacao_completa
,
"dados_gerados/dataset_naladi.parquet"
)
# Processa e organiza descrições NCM --------------------------------------
descricoes_por_sh
<-
read_excel
(
path_descricoes
,
guess_max
=
1e5
)
%>%
rename
(
sh
=
grupo_sh
)
ultimo_sh
<-
descricoes_por_sh
%>%
distinct
(
sh
)
%>%
pull
(
sh
)
%>%
max
()
descricoes_por_sh
<-
descricoes_por_sh
%>%
# remove o ultimo sh, pois ha ncms que ja deixaram de existir
filter
(
sh
!=
ultimo_sh
)
%>%
mutate
(
ncm
=
paste0
(
str_sub
(
ncm
,
1
,
4
),
"."
,
str_sub
(
ncm
,
5
,
6
),
"."
,
str_sub
(
ncm
,
7
,
8
)
),
sh
=
paste
(
"NCM"
,
sh
)
)
####################
# # obtem abas disponíveis
# abas <- readxl::excel_sheets(path_descricoes)
# # obtem nome da ultima aba
# ultimo_sh <- abas[length(abas)]
# # remove ultima aba
# abas <- abas[-length(abas)]
# append_descricoes <- function(aba) {
# read_xlsx(path_descricoes, sheet = aba) %>%
# mutate(
# across(
# everything(),
# ~if_else(is.na(.x), "", .x)
# ),
# across(
# everything(),
# ~str_replace(.x, "^- ", "-")
# ),
# across(
# everything(),
# ~str_replace(.x, "^-- ", "--")
# ),
# ) %>%
# transmute(
# codigoFormatado,
# sh,
# descricao = paste(
# desc_pos,
# desc_subpos5,
# desc_subpos6,
# desc_item,
# desc_subitem,
# sep = "\n"
# )
# ) %>%
# mutate(
# descricao = str_replace_all(
# descricao,
# "\n\n\n\n\n|\n\n\n\n|\n\n\n|\n\n",
# "\n"
# )
# ) %>%
# mutate(
# descricao = str_remove(descricao, "\n$")
# )
# }
# descricoes_por_sh <- purrr::map_dfr(
# abas,
# ~ append_descricoes(.x)
# ) %>%
# rename(ncm = codigoFormatado) %>%
# mutate(sh = str_replace(sh, "SH", "NCM"))
descricoes_atuais
<-
readRDS
(
file.path
(
Sys.getenv
(
"general"
),
"Bases"
,
"NCM_sh1996_a_sh2022"
,
"descricoes_atuais.rds"
)
)
%>%
as_tibble
()
%>%
mutate
(
ncm
=
paste0
(
str_sub
(
ncm
,
1
,
4
),
"."
,
str_sub
(
ncm
,
5
,
6
),
"."
,
str_sub
(
ncm
,
7
,
8
)
),
sh
=
paste
(
"NCM"
,
ultimo_sh
)
)
%>%
relocate
(
sh
,
.after
=
ncm
)
descricoes_por_sh
<-
descricoes_por_sh
%>%
bind_rows
(
descricoes_atuais
)
%>%
distinct
()
# necessário escapar ' para não dar problema na geração dos tooltips dos
# diagramas
descricoes_por_sh
<-
descricoes_por_sh
%>%
mutate
(
descricao
=
str_replace_all
(
descricao
,
"'"
,
"\\\\'"
))
%>%
mutate
(
descricao
=
str_replace_all
(
descricao
,
"\\r\\n"
,
" "
),
descricao
=
str_trunc
(
descricao
,
1020
,
'left'
)
)
# #####################################################
# # ATENÇÃO: Solução provisória para descrições NCM ##
# # Quando houver descrições para todas as NCMs ######
# # remover o código abaixo ##########################
# ####################################################
#
# descricoes_por_sh <- descricoes_por_sh %>%
# mutate(descricao = if_else(
# sh != "NCM 2022",
# " ",
# descricao
# ))
descricoes_por_sh
%>%
write_parquet
(
"dados_gerados/descricoes_ncm.parquet"
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment