Importando múltiplas bases de dados com R

arquivosem um sóQuem nunca enfrentou aquela pasta em seu computador cheia de arquivos de texto para serem transformadas em uma só base de dados? Sim. Todo mundo por aqui já teve esse dilema ou é muito provável que um dia vá enfrentar algo semelhante.

Durante os dias de festa eu finalmente achei inspiração para lidar com todas aquelas bases de dados sobre do Tribunal Superior Eleitoral. A causa de minha relutância em por minhas mãos em tais  bases era simplesmente o de evitar problemas com arquivos grandes e mal-arranjados de puro "txt". De fato, parece que não tem como escapar de problemas de codificação e malformação de arquivos de textos. Quanto maior o arquivo, maiores as chances de conter problemas com caracteres, delimitação dos campos e etc.

Todo o conjunto de dados que eu coletei do TSE consiste de aproximadamente 40GB de texto cru. Estes dados reportam resultados de eleições, perfil de candidatos, gastos de campanha etc. Assim, eu pensei que começar o ano organizando esse conjunto de dados pudesse ser um bom exemplo. E ainda mostrar como o R pode nos ajudar a gerenciar dados como os que tenho. O R é um poderoso pacote estatístico gratuito, por isso extremamente util para professores e estudantes que desenvolvem pesquisas com bases de dados.

A minha tarefa pode ser colocada da seguinte forma, suponha que você tenha um conjunto de dados (dados1.txt, dados2.txt, [...] ,dados27.txt), o qual representa dados independentes--ou subconjuntos--separados por estados, cidades ou ainda distritos eleitorais. E que você queira simplesmente agregar todas as bases  em uma única, assim poderá realizar analises de tipo mais agregadas, ou apenas para liberar espaço em seu computador evitando guardar vários arquivos de um mesmo conjunto.

Em suma, o objetivo é simples: obter uma tabela contendo todos os subconjuntos de dados que você tenha num diretório. Não se preocupe com minha simplicidade, casos mais complexos virão a tona, eu irei falar sobre eles em outros posts. A minha proposta para atingir esse objetivo é criar uma rotina para o R, informando o diretório onde os arquivos de dados estão, em seguida com um "laço for" fazer o R  passear pelos dados, importando-os e apensando-os em uma grande tabela. Por fim, gravar de volta no disco essa tabela. O pedaço de código abaixo faz tudo isso.

 

O que o script faz?

A primeira linha passa configura o diretório de trabalho onde o R deve procurar pelas bases de dados. A segunda linha cria um objeto de dados vazio na memória que o R usará para guardar cada arquivo que for importado. A terceira linha então lê o caminho para o diretório. Em seguida, um "laço for" executa o procedimento de importação de todas as bases do tipo ".txt" encontradas no caminho. Ou seja, se houver 1000 arquivos, o laço for irá repetir 1000 vezes. A última linha ainda dentro do "laço for" cria a tabela final apensando cada subconjunto que for importado para a memória. Finalmente, a última parte do programa, a qual está fora do "laço for" para torna-lo mais eficiente, simplesmente grava a tabela final (todos.arquivos) de volta no disco como arquivo de texto, com as colunas separadas por ponto e virgula (;). Se você estiver usando um computador configurado para português brasileiro, provavelmente poderá desconsiderar a parte "fileEncoding="windows-1252"".

O que acharam? Útil?

 

Um abraço e até a próxima!

 

Daniel Marcelino

 


Fatal error: Uncaught Exception: 12: REST API is deprecated for versions v2.1 and higher (12) thrown in /home/storage/4/6f/c7/pesquisamaconica/public_html/metodologiapolitica/wp-content/plugins/seo-facebook-comments/facebook/base_facebook.php on line 1273