Last active
July 27, 2023 23:51
-
-
Save fernandobarbalho/8f89eb4e7c777c800dafce01add56690 to your computer and use it in GitHub Desktop.
Calcula valores econômicos para uma data considerando conversão de moedas
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
calcula_valor_constante <- function(df_dados_hist, data_constante ){ | |
#Argumentos | |
#df_dados_hist: dataframe em que as duas primeiras colunas são formadas por uma data (Y-m-d) e um valor | |
#data_constante: data para gerar valor constante. Formato da data: Y-m-d | |
#Por enquanto as datas estão limitadas à da série temporal baixada do IPCA Total do portal de dados abertos do BACEN | |
#Essa série começa em 1992-01-01 | |
library(dplyr) | |
library(lubridate) | |
library(httr) | |
library(jsonlite) | |
names(df_dados_hist)[1:2]<- c("data","valor") | |
###faz a conversão para real | |
df_dados_hist<- | |
df_dados_hist %>% | |
mutate(valor= case_when( | |
data>= ymd("1992-01-01") & data<= ymd("1993/07/31") ~ valor/(1000^2*2.75), | |
data>= ymd("1993-08-01") & data<= ymd("1994/06/30") ~ valor/(1000*2.75), | |
TRUE ~ valor | |
)) | |
#################Cálculos econômicos | |
#Dados do IPCA com a série temporal | |
url<- "https://api.bcb.gov.br/dados/serie/bcdata.sgs.4449/dados?formato=json" | |
resposta <- GET(url) | |
IPCA_historico <- content(resposta, "text") | |
IPCA_historico <- fromJSON(IPCA_historico, flatten = TRUE) | |
IPCA_historico$valor <- as.numeric(IPCA_historico$valor) | |
# IPCA_historico <- read_delim("bcdata.sgs.4449.csv", | |
# ";", escape_double = FALSE, locale = locale(decimal_mark = ",", | |
# grouping_mark = "."), trim_ws = TRUE) | |
IPCA_historico<- | |
IPCA_historico %>% | |
filter(data<= ymd(data_constante)) | |
#################Cálculos econômicos | |
#Calcula o número índice para todos os meses da série temporal | |
num_index<- | |
map_dbl(1:NROW(IPCA_historico), function(a_i){ | |
prod(1+IPCA_historico$valor[1:a_i]/100) | |
}) | |
IPCA_historico$num_indice <- num_index | |
num_indice_constante<- | |
(IPCA_historico%>% | |
filter(dmy(data)== ymd(data_constante)))$num_indice | |
#################Cálculos econômicos | |
#Acrescenta a coluna do número índice | |
IPCA_historico$num_indice <- num_index | |
IPCA_historico_trab<- | |
IPCA_historico %>% | |
mutate(data= dmy(data)) %>% | |
filter(data %in% df_dados_hist$data) %>% | |
select(data,num_indice) | |
df_dados_hist %>% | |
inner_join(IPCA_historico_trab) %>% | |
mutate(valor = valor * (num_indice_constante/num_indice)) %>% | |
select(data, valor) | |
} | |
#Exemplo de uso | |
df_dados_hist<- | |
tibble(data=as.Date("1994-07-01"), valor =400) %>% | |
bind_rows(tibble(data=as.Date("1993-07-01"), valor =19800)) | |
df_valores_constantes<- calcula_valor_constante(df_dados_hist, "2020-05-01" ) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment