Metodologia Frete Sefaz- Soja , Milho e Algodão

1 Estrutura central do tratamento

2 Tratamento Frete

O tratamento para cálculo do frete, é feito por ano e da mesma forma para as culturas de Soja, Milho e algodão, a seguir é mostrado o passo a passo de como foi feito o tratamento.

2.1 Passo 1: Importação dos dados

Nesta primeira etapa, é importado os dados disponibilizados pela Sefaz, no software R, juntamente com o NCM do Imea, onde se vincula esses dados para podermos filtrar o que consideramos como Soja, Milho e Algodão, segundo o NCM.

rm(list = ls())
setwd('Z:/Área Técnica/Rotina/Projeções/R214_Tratamento de dados/SEFAZ/TRATAMENTO ATUAL/SOJA/NOVO TRATAMENTO SAFRA COMPLETA')
pacman::p_load(arrow,ggplot2,readr,
               readxl,tibble,lattice,
               stringr,dplyr,data.table,
               tidyr,outliers,rio,
               stringdist)
#---------------------------------------------------------#
#---------------------------------------------------------#
#carregar dados de 2024 , NCM e juntar as bases
dados_2024 = read_parquet('imea_jan_dez_24.parquet')
dados_2023 = read_parquet('imea_jan_dez_23.parquet')
dados_2022 = read_parquet('imea_jan_dez_22.parquet')

NCM <- read_excel("NCM.xlsx")|> 
  dplyr:: filter(Produto=="Milho"|Produto=="Soja" | Produto=="Algodão em pluma") |> # selecionar os produtos para o tratamento
  dplyr::rename(NUMR_NCM='NCM')

amostra_2024 = dplyr::inner_join(dados_2024,NCM)
amostra_2023 = dplyr::inner_join(dados_2023,NCM)
amostra_2022 = dplyr::inner_join(dados_2022,NCM)

2.2 Passo 2: Filtragem de informações não fundamentias

Esta etapa é a parte central do tratamento, pois é a onde importamos as descrições dos produtos que não consideramos, essas informações podem ser encontradas neste seguinte caminho: “Z:\Área Técnica\Rotina\Projeções\R214_Tratamento de dados\SEFAZ\TRATAMENTO ATUAL\SOJA\NOVO TRATAMENTO SAFRA COMPLETA\Desc.xlsx”.  A partir desta etapa o tratamento é feito por ano, além disso, é filtrado manualmente as informações que são e que se pareça com KG e T. No caso das descrições do produto, é retirado do banco de dados as informações que não necessitamos.

#------------------------ TRATAMENTO FRETE 2022 ------------------#
#---------------------------------------------------------#
#------------------------ FILTRAGEM------------------#
desconsiderar =  read_excel("Desc.xlsx", col_names = FALSE) # carregar base de descrições inuteis
desconsiderar_list = desconsiderar[[1]] # colocar no formato certo

amostra_2022_2 = dados_2022 %>% filter(grepl("Soja|SOJA|soja", DESC_PRODUTO, ignore.case = T)) # filtrar apenas soja 
amostra_2022_2 = amostra_2022_2 %>% filter(!DESC_PRODUTO %in% desconsiderar_list) # desconsiderar as descrições
text <- c(
  "PESO BRUTO", "PESO COBRADO", "PESO REAL", "KG", "TONELADA", "PESO BASE DE CALCULO", 
  "PESO", "PESO_BRUTO", "PESO DECLARADO", "PESO AFERIDO(Kg)", "QUILOGRAMA", "PESO AFERIDO", "TON", "Peso liq. (kg)", 
  "Peso bruto (kg)", "BRUTO", "PESO CARGA", "A GRANEL", "EPSO BRUTO", "KILOGRAMAS", "Quilos", "QUILO", "KILOGRAMA", 
  "PESO BASE CÁLC.(Kg)", "PESO BRUTO(Kg)", "KILO", "SACAS", "BASE", "T", "QUILOGRAMAS", "TN", "PESO_AFERIDO", "PESO_BASE_CALCULO", "Peso.Base", "Peso.Decl", 
  "toneladas", "GRANEL", "MILHO EM GRAOS", "Unidades", "PESO EM QUILOS", "MILHO", "AGRANEL", "MILHO EM GRAOS A GRA", "TO", "PESO APROXIMADO", "GUILOS", "QTDE. VOLUMES", "MILHO A GRANEL", "MILHO EM GRAO", "QUIKOGRAMA", "KILOS", 
  "QIOLOGRAMA", "PESO KG", "PEOS BRUTO", "UND/KG", "TH", "KILOGRMA", "KH", "PB", "GRAO") 
text = tolower(text)
pattern <- paste(text, collapse = "|")

amostra_2022_2 = amostra_2022_2 %>%
  mutate(TIPO_MEDIDA = tolower(TIPO_MEDIDA)) %>%
  filter(grepl(pattern, TIPO_MEDIDA)) %>% 
  filter(!TIPO_MEDIDA == 'litragem')

2.3 Passo 3: Modificação das variáveis

Esta etapa é destinada a transformação das variáveis, pois muitas informações vêm como texto, sendo que são numéricas, devido ao padrão brasileiro, que o separador de decimais é a virgula, as variáveis são as VALOR_PRESTACAO_SERVICO e QTDE_CARGA. Além disso é transformado a variável QTDE_CARGA em toneladas.

#------------------------ TRANSFORMAÇÂO EM NUMÈRICO ------------------#
amostra_2022_2$QTDE_CARGA = gsub(",",".", amostra_2022_2$QTDE_CARGA)
amostra_2022_2$QTDE_CARGA = as.numeric(amostra_2022_2$QTDE_CARGA)
amostra_2022_2 = amostra_2022_2 %>% 
  mutate(QTDE_CARGA = if_else(UNIDADE_MEDIDA == 'TON', QTDE_CARGA*1000,QTDE_CARGA)) %>% 
  mutate(QTDE_CARGA = QTDE_CARGA/1000) %>% 
  mutate(UNIDADE_MEDIDA = "TON")
#---------------------------------------------------------#
#------------------------ TRANSFORMAÇÂO EM NUMÈRICO ------------------#
amostra_2022_2$VALOR_PRESTACAO_SERVICO = gsub("\\.","", amostra_2022_2$VALOR_PRESTACAO_SERVICO)
amostra_2022_2$VALOR_PRESTACAO_SERVICO = gsub(",",".",amostra_2022_2$VALOR_PRESTACAO_SERVICO)
amostra_2022_2$VALOR_PRESTACAO_SERVICO = as.numeric(amostra_2022_2$VALOR_PRESTACAO_SERVICO)
#---------------------------------------------------------#

2.4 Passo 4: Cálculo do frete

Para se calcular o frete, utilizasse as variáveis transformadas e feita a seguinte operação:

Valor frete = VALOR_PRESTACAO_SERVICO/ QTD_CARGA

Em seguida é retirado os valores ausentes referente a operção feita.

#------------------------ calculo do frete------------------#
# calculando o valor do frete
amostra_2022_2 = amostra_2022_2 %>% 
  mutate(valor_frete_RS_T = (VALOR_PRESTACAO_SERVICO/QTDE_CARGA))
amostra_2022_2 <- amostra_2022_2 %>%
  filter(is.finite(valor_frete_RS_T) & !is.na(valor_frete_RS_T))
boxplot(amostra_2022_2$valor_frete_RS_T)

2.5 Passo 5: Remoção de valores duplicados

É retirado as variáveis TIPO_MEDIDA, UNIDADE_MEDIDA, VALOR_ICMS_PRODUTO CODG_CST_ICMS, pois já temos todos os valores em toneladas e as outras variáveis não são utilizadas e impactam na detecção de valores duplicados.

#------------------------ REMOVER VALORES DUPLICADOS ------------------#
amostra_2022_2 = amostra_2022_2 %>% 
  select(!c(TIPO_MEDIDA, UNIDADE_MEDIDA, VALOR_ICMS_PRODUTO,CODG_CST_ICMS))

duplicados<- duplicated(amostra_2022_2, fromLast = T)
df_2022 = amostra_2022_2[!duplicados,]

2.6 Passo 6: Remoção de Outliers

A remoção é feita pelo método interquartílico (IQR). Ele se baseia nos quartis do conjunto de dados e no intervalo interquartil (IQR), que é definido como a diferença entre o terceiro quartil (Q3) e o primeiro quartil (Q1).

#------------------------ REMOVER OUTLIERS ------------------#
q1_vfrete = quantile(df_2022$valor_frete_RS_T, 0.25)
q3_vfrete = quantile(df_2022$valor_frete_RS_T, 0.75)
irq_vfrete = IQR(df_2022$valor_frete_RS_T)
lim_inf = q1_vfrete-(1.5*irq_vfrete)
lim_sup = q3_vfrete+(1.5*irq_vfrete)

x_filtered <-  df_2022%>%
  filter(valor_frete_RS_T >= lim_inf & valor_frete_RS_T <= lim_sup)

2.7 Passo 7: Filtragem de valores coerentes

Mesmo removendo outliers, devido a complexidade dos dados, as diversas rotas, descrições equivocadas, ainda é necessário a filtragem de valores de frete que fazem sentido, então é comparado os valores com o banco de dados do Imea e foi definido os valores de máximo e mínimo.

#------------------------ FITRAGEM DE VALORES COERENTES ------------------#
x = x_filtered %>% 
  filter(valor_frete_RS_T >= 20)
x = x %>% 
  filter(valor_frete_RS_T <= 600)

2.8 Passo 8: Juntando as bases

Depois de realizado os 7 passos para cada ano (2022,2023,2024) é combinado os tratamentos, tendo assim, a base completa dos 3 anos, logo a pós a junção, é feita outra remoção de outliers para garantir que os dados estejam minimamente coerentes, onde essa base final é exportada no formato CSV, onde esta é utilizada na construção do Dashboard.

#------------------------ JUTNANDO OS TRATAMENTOS ------------------#
dados_F = rbind(x_2022,x_2023,x_2024)
#---------------------------------------------------------#
q1_vfrete = quantile(dados_F$valor_frete_RS_T, 0.25)
q3_vfrete = quantile(dados_F$valor_frete_RS_T, 0.75)
irq_vfrete = IQR(dados_F$valor_frete_RS_T)
lim_inf = q1_vfrete-(1.5*irq_vfrete)
lim_sup = q3_vfrete+(1.5*irq_vfrete)

x_F <-  dados_F%>%
  filter(valor_frete_RS_T >= lim_inf & valor_frete_RS_T <= lim_sup)

#-------------------------------------------------------------------#
write.csv2(dados_F, 'TRATAMENTO_FRETE_SEM_REMOCAO_NO_FINAL.csv', fileEncoding = 'Latin1',row.names = F)

3 Tratamento Preço

O tratamento para o preço, é feito por ano e da mesma forma para as culturas de Soja, Milho e algodão, a seguir é mostrado o passo a passo de como foi feito o tratamento.

3.1 Passo 1: Importação dos dados

Nesta primeira etapa, é importado os dados disponibilizados pela Sefaz, no software R, juntamente com o NCM do Imea, onde se vincula esses dados para podermos filtrar o que consideramos como Soja, Milho e Algodão, segundo o NCM.

rm(list = ls())
setwd('Z:/Área Técnica/Rotina/Projeções/R214_Tratamento de dados/SEFAZ/TRATAMENTO ATUAL/SOJA/NOVO TRATAMENTO SAFRA COMPLETA')
pacman::p_load(arrow,ggplot2,readr,
               readxl,tibble,lattice,
               stringr,dplyr,data.table,
               tidyr,outliers,rio,
               stringdist)
#---------------------------------------------------------#
#---------------------------------------------------------#
#carregar dados de 2024 , NCM e juntar as bases
dados_2024 = read_parquet('imea_jan_dez_24.parquet')
dados_2023 = read_parquet('imea_jan_dez_23.parquet')
dados_2022 = read_parquet('imea_jan_dez_22.parquet')

NCM <- read_excel("NCM.xlsx")|> 
  dplyr:: filter(Produto=="Milho"|Produto=="Soja" | Produto=="Algodão em pluma") |> # selecionar os produtos para o tratamento
  dplyr::rename(NUMR_NCM='NCM')

amostra_2024 = dplyr::inner_join(dados_2024,NCM)
amostra_2023 = dplyr::inner_join(dados_2023,NCM)
amostra_2022 = dplyr::inner_join(dados_2022,NCM)

3.2 Passo 2: Filtragem de informações não fundamentias

Esta etapa é a parte central do tratamento, pois é onde são importamos as descrições dos produtos que não consideramos, essas informações podem ser encontradas neste seguinte caminho: “Z:\Área Técnica\Rotina\Projeções\R214_Tratamento de dados\SEFAZ\TRATAMENTO ATUAL\SOJA\NOVO TRATAMENTO SAFRA COMPLETA\Desc.xlsx”.  A partir desta etapa o tratamento é feito por ano, além disso, é filtrado manualmente as informações que são e que se pareça com KG e T. No caso das descrições do produto, é retirado do banco de dados as informações que não necessitamos.

#------------------------ TRATAMENTO PRECO 2022 ------------------#
#---------------------------------------------------------#
desconsiderar =  read_excel("Desc.xlsx", col_names = FALSE)
desconsiderar_list = desconsiderar[[1]]

amostra_2022_2 = dados_2022 %>% filter(grepl("Soja|SOJA|soja", DESC_PRODUTO, ignore.case = T))
amostra_2022_2 = amostra_2022_2 %>% filter(!DESC_PRODUTO %in% desconsiderar_list)
amostra_2022_2 = amostra_2022_2 %>% filter(!grepl("Semente|SEMENTE|semente|sem|SEM|Sem", DESC_PRODUTO, ignore.case = T))
amostra_2022_2 = amostra_2022_2 %>% filter(!grepl("FARELO|Farelo|farelo|far|FAR", DESC_PRODUTO,ignore.case = T ))

text <- c(
  "PESO BRUTO", "PESO COBRADO", "PESO REAL", "KG", "TONELADA", "PESO BASE DE CALCULO", 
  "PESO", "PESO_BRUTO", "PESO DECLARADO", "PESO AFERIDO(Kg)", "QUILOGRAMA", "PESO AFERIDO", "TON", "Peso liq. (kg)", 
  "Peso bruto (kg)", "BRUTO", "PESO CARGA", "A GRANEL", "EPSO BRUTO", "KILOGRAMAS", "Quilos", "QUILO", "KILOGRAMA", 
  "PESO BASE CÁLC.(Kg)", "PESO BRUTO(Kg)", "KILO", "SACAS", "BASE", "T", "QUILOGRAMAS", "TN", "PESO_AFERIDO", "PESO_BASE_CALCULO", "Peso.Base", "Peso.Decl", 
  "toneladas", "GRANEL", "MILHO EM GRAOS", "Unidades", "PESO EM QUILOS", "MILHO", "AGRANEL", "MILHO EM GRAOS A GRA", "TO", "PESO APROXIMADO", "GUILOS", "QTDE. VOLUMES", "MILHO A GRANEL", "MILHO EM GRAO", "QUIKOGRAMA", "KILOS", 
  "QIOLOGRAMA", "PESO KG", "PEOS BRUTO", "UND/KG", "TH", "KILOGRMA", "KH", "PB", "GRAO")

text = tolower(text)
pattern <- paste(text, collapse = "|")

amostra_2022_2 = amostra_2022_2 %>%
  mutate(TIPO_MEDIDA = tolower(TIPO_MEDIDA)) %>%
  filter(grepl(pattern, TIPO_MEDIDA)) %>% 
  filter(!TIPO_MEDIDA == 'litragem')

3.3 Passo 3: Modificação das variáveis

Esta etapa é destinada a transformação das variáveis, pois muitas informações vêm como texto, sendo que são numéricas, devido ao padrão brasileiro, que o separador de decimais é a virgula, a variável modificada é a VALOR_PRESTACAO_SERVICO.

#---------------------------------------------------------#
amostra_2022_2$VALR_UNIDADE_COMERCIAL = gsub("\\.","", amostra_2022_2$VALR_UNIDADE_COMERCIAL)
amostra_2022_2$VALR_UNIDADE_COMERCIAL = gsub(",",".", amostra_2022_2$VALR_UNIDADE_COMERCIAL)
amostra_2022_2$VALR_UNIDADE_COMERCIAL = as.numeric(amostra_2022_2$VALR_UNIDADE_COMERCIAL)
boxplot(amostra_2022_2$VALR_UNIDADE_COMERCIAL)
#---------------------------------------------------------#

3.4 Passo 4: Remoção de valores duplicados

É retirado as variáveis TIPO_MEDIDA, UNIDADE_MEDIDA, VALOR_ICMS_PRODUTO CODG_CST_ICMS, pois já temos todos os valores em toneladas e as outras variáveis não são utilizadas e impactam na detecção de valores duplicados.

#---------------------------------------------------------#
amostra_2022_2 = amostra_2022_2 %>% 
  select(!c(TIPO_MEDIDA, UNIDADE_MEDIDA, VALOR_ICMS_PRODUTO,CODG_CST_ICMS))

duplicados<- duplicated(amostra_2022_2, fromLast = T)
df_2022 = amostra_2022_2[!duplicados,]
#---------------------------------------------------------#

3.5 Passo 5: Transformação do valor para sacas

Nesta etapa é multiplicado a variável VALR_UNIDADE_COMERCIAL por 60, para se obter o valor em sacas.

#---------------------------------------------------------#
df_2022 = df_2022 %>% 
  mutate(preco  = df_2022$VALR_UNIDADE_COMERCIAL * 60)
boxplot(df_2022$preco)
#---------------------------------------------------------#

3.6 Passo 6: Filtragem de valores coerentes

Devido a complexidade dos dados, as diversas rotas, descrições equivocadas, ainda é necessário a filtragem de valores de frete que fazem sentido, então é comparado os valores com o banco de dados do Imea e foi definido os valores de máximo e mínimo.

#---------------------------------------------------------#
x = df_2022 %>% 
  filter(preco >= 70)
x = x %>% 
  filter(preco <= 200)
boxplot(x$preco)
summary(x$preco)
#---------------------------------------------------------#

3.7 Passo 7: Remoção de Outliers

A remoção é feita pelo método interquartílico (IQR). Ele se baseia nos quartis do conjunto de dados e no intervalo interquartil (IQR), que é definido como a diferença entre o terceiro quartil (Q3) e o primeiro quartil (Q1).

#---------------------------------------------------------#
q1_vfrete = quantile(x$preco, 0.25)
q3_vfrete = quantile(x$preco, 0.75)
irq_vfrete = IQR(x$preco)
lim_inf = q1_vfrete-(1.5*irq_vfrete)
lim_sup = q3_vfrete+(1.5*irq_vfrete)

x_2022 <-  x%>%
  filter(preco >= lim_inf & preco <= lim_sup)


boxplot(x_2022$preco)
summary(x_2022$preco)
#---------------------------------------------------------#

3.8 Passo 8: Juntando as bases

Depois de realizado os 7 passos para cada ano (2022,2023,2024) é combinado os tratamentos, tendo assim, a base completa dos 3 anos, onde essa base final é exportada no formato CSV, que é utilizada na construção do Dashboard.

#------------------------ JUTNANDO OS TRATAMENTOS ------------------#
dados_F = rbind(x_2022,x_2023,x_2024)
boxplot(dados_F$preco)
summary(dados_F$preco)

write.csv2(dados_F, 'TRATAMENTO_PRECO_SEM_REMOCAO_NO_FINAL.csv', fileEncoding = 'Latin1',row.names = F)

4 Tratamento Volume

O tratamento para o volume, é feito por ano e da mesma forma para as culturas de Soja, Milho e Algodão, a seguir é mostrado o passo a passo de como foi feito o tratamento.

4.1 Passo 1:  Importação dos dados

Nesta primeira etapa, é importado os dados disponibilizados pela Sefaz, no software R, juntamente com o NCM do Imea, onde se vincula esses dados para podermos filtrar o que consideramos como Soja, Milho e Algodão, segundo o NCM.

#_____________________TRATAMENTO POR ANO_____________________#
rm(list = ls())
setwd('Z:/Área Técnica/Rotina/Projeções/R214_Tratamento de dados/SEFAZ/TRATAMENTO ATUAL/SOJA/NOVO TRATAMENTO SAFRA COMPLETA')
pacman::p_load(arrow,ggplot2,readr,
               readxl,tibble,lattice,
               stringr,dplyr,data.table,
               tidyr,outliers,rio,
               stringdist)
#---------------------------------------------------------#
#---------------------------------------------------------#
#carregar dados de 2024 , NCM e juntar as bases
dados_2024 = read_parquet('imea_jan_dez_24.parquet')
dados_2023 = read_parquet('imea_jan_dez_23.parquet')
dados_2022 = read_parquet('imea_jan_dez_22.parquet')

NCM <- read_excel("NCM.xlsx")|> 
  dplyr:: filter(Produto=="Milho"|Produto=="Soja" | Produto=="Algodão em pluma") |> # selecionar os produtos para o tratamento
  dplyr::rename(NUMR_NCM='NCM')

amostra_2024 = dplyr::inner_join(dados_2024,NCM)
amostra_2023 = dplyr::inner_join(dados_2023,NCM)
amostra_2022 = dplyr::inner_join(dados_2022,NCM)

4.2 Passo 2: Filtragem de informações não fundamentais

Esta etapa é a parte central do tratamento, pois é onde são importamos as descrições dos produtos que não consideramos, essas informações podem ser encontradas neste seguinte caminho: “Z:\Área Técnica\Rotina\Projeções\R214_Tratamento de dados\SEFAZ\TRATAMENTO ATUAL\SOJA\NOVO TRATAMENTO SAFRA COMPLETA\Desc.xlsx”.  A partir desta etapa o tratamento é feito por ano, além disso, é filtrado manualmente as informações que são e que se pareça com KG e T. No caso das descrições do produto, é retirado do banco de dados as informações que não necessitamos.

#------------------------ TRATAMENTO PRECO 2022 ------------------#
#---------------------------------------------------------#
desconsiderar =  read_excel("Desc.xlsx", col_names = FALSE)
desconsiderar_list = desconsiderar[[1]]

amostra_2022_2 = dados_2022 %>% filter(grepl("Soja|SOJA|soja", DESC_PRODUTO, ignore.case = T))
amostra_2022_2 = amostra_2022_2 %>% filter(!DESC_PRODUTO %in% desconsiderar_list)
amostra_2022_2 = amostra_2022_2 %>% filter(!grepl("Semente|SEMENTE|semente|sem|SEM|Sem", DESC_PRODUTO, ignore.case = T))
amostra_2022_2 = amostra_2022_2 %>% filter(!grepl("FARELO|Farelo|farelo|far|FAR", DESC_PRODUTO,ignore.case = T ))
text <- c(
  "PESO BRUTO", "PESO COBRADO", "PESO REAL", "KG", "TONELADA", "PESO BASE DE CALCULO", 
  "PESO", "PESO_BRUTO", "PESO DECLARADO", "PESO AFERIDO(Kg)", "QUILOGRAMA", "PESO AFERIDO", "TON", "Peso liq. (kg)", 
  "Peso bruto (kg)", "BRUTO", "PESO CARGA", "A GRANEL", "EPSO BRUTO", "KILOGRAMAS", "Quilos", "QUILO", "KILOGRAMA", 
  "PESO BASE CÁLC.(Kg)", "PESO BRUTO(Kg)", "KILO", "SACAS", "BASE", "T", "QUILOGRAMAS", "TN", "PESO_AFERIDO", "PESO_BASE_CALCULO", "Peso.Base", "Peso.Decl", 
  "toneladas", "GRANEL", "MILHO EM GRAOS", "Unidades", "PESO EM QUILOS", "MILHO", "AGRANEL", "MILHO EM GRAOS A GRA", "TO", "PESO APROXIMADO", "GUILOS", "QTDE. VOLUMES", "MILHO A GRANEL", "MILHO EM GRAO", "QUIKOGRAMA", "KILOS", 
  "QIOLOGRAMA", "PESO KG", "PEOS BRUTO", "UND/KG", "TH", "KILOGRMA", "KH", "PB", "GRAO")

text = tolower(text)
pattern <- paste(text, collapse = "|")

amostra_2022_2 = amostra_2022_2 %>%
  mutate(TIPO_MEDIDA = tolower(TIPO_MEDIDA)) %>%
  filter(grepl(pattern, TIPO_MEDIDA)) %>% 
  filter(!TIPO_MEDIDA == 'litragem')

amostra_2022_2 = amostra_2022_2 %>%
  filter(grepl("(?i)KG|kg|Kilo grama|Quilo Grama|TON|Ton|Tonelada", UNIDADE_MEDIDA))
#---------------------------------------------------------#

4.3 Passo 3: Modificação das variáveis

Esta etapa é destinada a transformação das variáveis, pois muitas informações vêm como texto, sendo que são numéricas, devido ao padrão brasileiro, que o separador de decimais é a virgula, a variável modificada é a QTDE_CARGA.

#---------------------------------------------------------#
amostra_2022_2$QTDE_CARGA = gsub(",",".", amostra_2022_2$QTDE_CARGA)
amostra_2022_2$QTDE_CARGA = as.numeric(amostra_2022_2$QTDE_CARGA)
boxplot(amostra_2022_2$QTDE_CARGA)
#---------------------------------------------------------#

4.4 Passo 4: Transformar a variável em toneladas

Este passo é para deixar todas as informações da variável em toneladas, visando facilitar futuros cálculos.

#---------------------------------------------------------#
amostra_2022_2 = amostra_2022_2 %>% 
  mutate(QTDE_CARGA = ifelse(QTDE_CARGA >= 1000, QTDE_CARGA / 1000, QTDE_CARGA))
#---------------------------------------------------------#

4.5 Passo 5: Remoção de valores duplicados

É retirado as variáveis TIPO_MEDIDA, UNIDADE_MEDIDA, VALOR_ICMS_PRODUTO,CODG_CST_ICMS, pois já temos todos os valores em toneladas e as outras variáveis não são utilizadas e impactam na detecção de valores duplicados.

#---------------------------------------------------------#
amostra_2022_2 = amostra_2022_2 %>% 
  select(!c(TIPO_MEDIDA, UNIDADE_MEDIDA, VALOR_ICMS_PRODUTO,CODG_CST_ICMS))

duplicados<- duplicated(amostra_2022_2, fromLast = T)
df_2022 = amostra_2022_2[!duplicados,]
amostra_2022_2 = df_2022
#---------------------------------------------------------#

4.6 Passo 6: Remoção de outliers

A remoção é feita pelo método interquartílico (IQR). Ele se baseia nos quartis do conjunto de dados e no intervalo interquartil (IQR), que é definido como a diferença entre o terceiro quartil (Q3) e o primeiro quartil (Q1).

#---------------------------------------------------------#
q1_vfrete = quantile(amostra_2022_2$QTDE_CARGA, 0.25)
q3_vfrete = quantile(amostra_2022_2$QTDE_CARGA, 0.75)
irq_vfrete = IQR(amostra_2022_2$QTDE_CARGA)
lim_inf = q1_vfrete-(1.5*irq_vfrete)
lim_sup = q3_vfrete+(1.5*irq_vfrete)

x_filtered <- amostra_2022_2 %>%
  filter(QTDE_CARGA >= lim_inf & QTDE_CARGA <= lim_sup)

boxplot(x_filtered$QTDE_CARGA)
x_22 = x_filtered
#---------------------------------------------------------#

4.7 Passo 7: Agrupando as bases

Depois de realizado os 7 passos para cada ano (2022,2023,2024) é combinado os tratamentos, tendo assim, a base completa dos 3 anos, onde essa base final é exportada no formato CSV, que é utilizada na contrução do Dashboard.

#------------------------ JUTNANDO OS TRATAMENTOS ------------------#
dados_F = rbind(x_22,x_23,x_24)
write.csv2(x_filtered, 'TRATAMENTO_VOLUME.csv', fileEncoding = 'Latin1',row.names = F)

5 Conclusões

Os dados utilizados neste tratamento apresentam um alto grau de complexidade, devido às múltiplas variáveis que precisam ser cuidadosamente analisadas e às interações que ocorrem entre elas. Essa complexidade, enquanto enriquece o conjunto de informações e possibilita uma visão mais abrangente, também traz desafios significativos para a interpretação e a precisão dos resultados.

Apesar dos métodos aplicados fornecerem insights valiosos, é fundamental reconhecer tanto as limitações quanto as áreas de potencial melhoria, algumas limitações decorrem da qualidade e integridade dos dados disponíveis, além de possíveis restrições dos modelos de captura de nuances específicas.