deflateBR
deflateBR copied to clipboard
funcao deflacionar muito lenta. Tente vetorizar.
Bacana. Mas testei o pacote num grande banco de dados (500 milhoes de linhas) e a funcao deflacionar esta muito lenta. Nao tem motivo para ser tao lenta, ja que no fundo eh apenas uma operacao multiplicacao.
A funcao esta sendo chamada linha a linha? Acho que voce precisa vetorizar.
Segue um pseudo codigo para vetorizar:
- extrair um vetor
data_unica
a partir das das datas unicas donominal_dates
- baixar os dados do Ipeadata para cada data unica
- criar um data.frame pequeno,
def
, com colunas data_unica edeflator
(para uma certareal_date
) - mergear os dados originais (um data.frame com
nominal_dates
enominal_values
) comdef
. Esta operacao eh bem rapida, principalmente se voce usar data.table - multplicar
nominal_values
pordeflator
Meu caro, sem saber mais detalhes sobre o código e o ambiente que produziram essa lentidão é difícil saber o que a causou. Como é possível ver no código da função principal do pacote, falta de vetorização não é o problema -- todos os dados são baixados em uma única chamada. Abs.
Obrigado. Por conincidencia sou do Ipea. Os dados sao resgistros administrativos que nao podem ser divulgados. O ambiente eh R 4.1, Windowns (estou off agora nao consigo gerar a descricao do environment). Mas basicamente tudo la roda rapido. Este pacote esta destoando.
Minha suspeita (nao olhei seu codigo) eh que talvez o pacote nao remova as duplicidades de datas, por mais que faca apenas um pedido para a API.
Por exemplo, se ha duas obsevacoes com a data de jan2019, os dados que o pacote deveria pedir para a API nao deveriam ter esta duplicidade.