O pacote rfbCNPJ
baixa e lê os arquivos contendo a lista de todas as empresas do Brasil, disponibilizado pela Receita Federal em 15 de dezembro de 2017. São duas tabelas por UF: i) empresas, contendo informações como CNPJ, nome da empresa e ii) socios, contendo quadro de sócios.
Como os arquivos são do tipo fixed width, algumas pessoas podem ter dificuldade para ler e empilhar os arquivos no R. Esse pacote facilita as operações de download e leitura.
You can install rfbCNPJ from CRAN with:
install.packages("rfbCNPJ")
You can install the latest version of rfbCNPJ
from github with:
# install.packages("devtools")
devtools::install_github("jtrecenti/rfbCNPJ")
Você pode baixar o arquivo .txt
bruto para cada UF usando o comando
rfb_download()
. Por padrão, temos ufs = NULL
, que baixará os arquivos
de todas as UFs. Esses arquivos somam aproximadamente 4.8 GB em disco.
rfb_download(ufs = c("AC", "RR"), path = "caminho/da/pasta")
A partir de uma pasta contendo os arquivos txt, você pode carregar as bases
de dados rodando rfb_read()
com os caminhos dos arquivos ou rfb_read_dir()
diretamente para ler todos os arquivos da pasta. Certifique-se de que a pasta
que contém os arquivos a serem lidos contém apenas os arquivos baixados
em .txt
.
path <- "caminho/da/pasta"
all_files <- fs::dir_ls(path)
dados <- rfb_read(all_files)
dados <- rfb_read_fir(path) # equivalente
Os dados são carregados numa tabela complexa com duas list-columns.
library(tibble)
print(dados, n = 27)
# A tibble: 27 x 3
file empresa socio
<chr> <list> <list>
1 D71214AC.txt <tibble [15,690 × 3]> <tibble [26,268 × 6]>
2 D71214AL.txt <tibble [60,067 × 3]> <tibble [109,762 × 6]>
3 D71214AM.txt <tibble [64,306 × 3]> <tibble [121,095 × 6]>
4 D71214AP.txt <tibble [15,941 × 3]> <tibble [28,063 × 6]>
5 D71214BA.txt <tibble [422,396 × 3]> <tibble [787,637 × 6]>
6 D71214CE.txt <tibble [193,654 × 3]> <tibble [352,841 × 6]>
7 D71214DF.txt <tibble [194,734 × 3]> <tibble [368,607 × 6]>
8 D71214ES.txt <tibble [179,150 × 3]> <tibble [354,358 × 6]>
9 D71214GO.txt <tibble [328,524 × 3]> <tibble [619,810 × 6]>
10 D71214MA.txt <tibble [123,736 × 3]> <tibble [201,854 × 6]>
11 D71214MG.txt <tibble [962,930 × 3]> <tibble [1,916,405 × 6]>
12 D71214MS.txt <tibble [102,208 × 3]> <tibble [189,673 × 6]>
13 D71214MT.txt <tibble [141,464 × 3]> <tibble [262,358 × 6]>
14 D71214PA.txt <tibble [159,079 × 3]> <tibble [274,004 × 6]>
15 D71214PB.txt <tibble [79,275 × 3]> <tibble [138,596 × 6]>
16 D71214PE.txt <tibble [224,184 × 3]> <tibble [426,520 × 6]>
17 D71214PI.txt <tibble [61,627 × 3]> <tibble [105,008 × 6]>
18 D71214PR.txt <tibble [708,109 × 3]> <tibble [1,392,658 × 6]>
19 D71214RJ.txt <tibble [843,040 × 3]> <tibble [1,708,931 × 6]>
20 D71214RN.txt <tibble [80,562 × 3]> <tibble [150,411 × 6]>
21 D71214RO.txt <tibble [62,385 × 3]> <tibble [109,774 × 6]>
22 D71214RR.txt <tibble [11,908 × 3]> <tibble [21,737 × 6]>
23 D71214RS.txt <tibble [670,093 × 3]> <tibble [1,350,159 × 6]>
24 D71214SC.txt <tibble [498,511 × 3]> <tibble [974,351 × 6]>
25 D71214SE.txt <tibble [63,303 × 3]> <tibble [114,081 × 6]>
26 D71214SP.txt <tibble [2,730,412 × 3]> <tibble [5,585,988 × 6]>
27 D71214TO.txt <tibble [51,629 × 3]> <tibble [89,911 × 6]>
A primeira coluna complexa mostra dados das empresas, e a segunda mostra dados dos sócios.
Para carregar uma dessas listas, use tidyr::unnest()
.
Empresas: (nesse caso, dados
representa a base completa da receita).
library(magrittr)
empresas <- dados %>%
dplyr::select(file, empresa) %>%
tidyr::unnest(empresa)
empresas
# A tibble: 9,048,917 x 4
file tipo cnpj nome_empresarial
<chr> <chr> <chr> <chr>
1 D71214AC.txt 01 07398403000180 BOI GORDO AGROPECUARIA COMERCIO E R…
2 D71214AC.txt 01 03173169000131 CONSELHO ESCOLAR BOM JESUS
3 D71214AC.txt 01 07399184000153 D & A SOLUCOES INFORMATICA LTDA - ME
4 D71214AC.txt 01 07399188000131 SOCIEDADE AGRICOLA POERINHA
5 D71214AC.txt 01 03300047000169 ASSOCIACAO MAO AMIGA DE PRODUTORES …
6 D71214AC.txt 01 04940648000107 ASSOCIACAO DOS PRODUTORES RURAIS E …
7 D71214AC.txt 01 04940653000101 CONSELHO ESCOLAR POLO HORTIGRANJEIRO
8 D71214AC.txt 01 04940654000156 CONSELHO ESCOLAR CENTRO EDUCACIONAL…
9 D71214AC.txt 01 03301098000105 ASSOCIACAO AGROEXTRATIVISTA SANTOS …
10 D71214AC.txt 01 01653480000152 DENEVS - TERCEIRIZACAO LTDA
# ... with 9,048,907 more rows
Sócios:
socios <- dados %>%
dplyr::select(file, socio) %>%
tidyr::unnest(socio)
socios
# A tibble: 17,780,860 x 7
file tipo cnpj indicador_cpf_c… cpf_cnpj_socio qualificacao nome
<chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 D7121… 02 0739… 2 NA 49 SELMA…
2 D7121… 02 0739… 2 NA 22 MARCE…
3 D7121… 02 0317… 2 NA 16 MARIA…
4 D7121… 02 0739… 2 NA 49 DILSO…
5 D7121… 02 0739… 2 NA 22 ANGEL…
6 D7121… 02 0739… 2 NA 16 RAIMU…
7 D7121… 02 0330… 2 NA 16 MOISE…
8 D7121… 02 0494… 2 NA 16 RAIMU…
9 D7121… 02 0494… 2 NA 16 MARIA…
10 D7121… 02 0494… 2 NA 16 EUCLI…
# ... with 17,780,850 more rows
Você pode carregar os arquivos binários diretamente da web usando a função
rfb_import()
. Essa função baixa os arquivos binários diretamente do
Dropbox.
Você pode baixar usando o parâmetro type=
, com as opções "all"
(tibble complexa com list columns), "empresas" (tibble retangular) e
"socios" (tibble retangular).
empresas <- rfb_import("empresas")
Você também pode baixar os dados dos arquivos binários em .rds
desses links
com arquivos armazenados diretamente no dropbox:
Para ler um desses arquivos, basta rodar
dados <- readRDS("caminho/para/dados.rds")
Você pode fazer filtros da base por UF. Basta olhar o nome do arquivo
na coluna file
:
dados_com_uf <- dados %>%
dplyr::mutate(uf = stringr::str_extract(file, "([A-Z]{2})(?=\\.txt)"))
MIT