Baixando séries diretamente do SGS do Banco Central pelo R

Pesquisando pelos blogs a gente acaba conhecendo vários pacotes que fazem isso. Alguns ótimos, outros exageradamente grandes, mas minha dificuldade sempre foi fazer funcionar através do firewall do escritório. Pesquisei um pouco mais e adotei uma abordagem mais minimalista, baixando os dados direto das APIs dos institutos e trabalhando. Segue um código de exemplo simples, facilmente adaptável e a explicação:

Os dados do BCB estão acessíveis através de endereços web especialmente construídos, que podemos colocar no próprio browser. Vou usar como exemplo a série do IBC-BR, que é a série 24363. O endereço para ela é:

http://api.bcb.gov.br/dados/serie/bcdata.sgs.24363/dados?formato=json

Se quiser, experimente colar este endereço no seu navegador. Os dados aparecem razoavelmente ordenados, de acordo com o formato JSON. Repare que o número da série é parte do endereço, portanto, para puxar outra série basta substituir o número dela no local correto.

Para o IBC reparei que a série não vai até o final quado chamada neste endereço. Para vir ela toda eu adiciono no fim uma data inicial e ele interpreta que quero tudo, até o fim. O endereço fica assim:

http://api.bcb.gov.br/dados/serie/bcdata.sgs.24363/dados?formato=json&dataInicial=01/01/2001

Repare que coloquei 2001, mas os dados só começam em 2003. O R possui algumas bibliotecas que lêem os dados no formato JSON, eu escolhi usar a “jsonlite”.


library(jsonlite)

A função que lê os dados JSON é a fromJSON. Na linha a seguir mando ele baixar os dados do endereço, passo pelo fromJSON para traduzir para o formato data.frame e salvo em uma variável.


ibc = fromJSON("http://api.bcb.gov.br/dados/serie/bcdata.sgs.24363/dados?formato=json&dataInicial=01/01/2001")

Se der um erro provavelmente você está no escritório e a TIC está bloqueando o acesso direto. Contornamos isso baixando os dados primeiro para um arquivo e lendo ele a partir daí.


download.file("http://api.bcb.gov.br/dados/serie/bcdata.sgs.24363/dados?formato=json&dataInicial=01/01/2001","ibcbr.json")
ibc = fromJSON("ibcbr.json")

Já podemos ler essa variável IBC no R normalmente, PARECE que está tudo certo. Se analisarmos mais profundamente, no entanto, vemos que os dados estão codificados como “caracteres” e não como números. Vamos fazer a conversão no R mesmo.


ibc$valor = as.numeric(ibc$valor)
ibc$data = as.Date(ibc$data,"%d/%m/%Y")

ibc

plot(ibc, type="l", main="IBC-BR", ylab="", xlab="")

O último gráfico deve ficar assim:

Rplot.jpg

Esse método vale para o BCB, mas para os demais órgãos é semelhante. Só é questão de descobrir como são formados os endereços e qual formato de arquivo eles usam. Por exemplo, no IBGE os endereços são formados com regras de acordo com esta página: http://api.sidra.ibge.gov.br/home/ajuda

3 comentários sobre “Baixando séries diretamente do SGS do Banco Central pelo R

  1. Murilo Gomes disse:

    Olá Gabriel,

    Tu tivestes algum problema em usar este api recentemente?
    Sempre utilizei o teu exemplo para os meus api’s, no entanto agora não estou conseguindo ter acesso aos do SGS pelo api.

Deixe uma resposta para Gabriel Rega Cancelar resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s