Uncategorized

Momento R do Dia – Como transformar “10 034.23” em “10034.23”…numérico?

Pedi para minha turma de Econometria III fazer um exercício com dados municipais. O pessoal pisou na casca de banana e me entregou uma planilha cuja visão parcial está aí embaixo.

dicaRRepare na coluna “pibper” que diz respeito ao PIB per capita. Quando percebi o erro, comecei a corrigir. Levaria horas para fazer isto – ou teria que tentar fazer uma macro…eu tentei, mas não tive sucesso – na planilha. Quem tabulou conseguiu transformar o dado do PIB per capita em um tipo de dado chr. Logo, o R não o interpretava como número.

Caso você use RStudio, é fácil descobrir o problema erro. Foi assim que descobri que o problema sequer estaria em uma suposta multicolineridade.

dicaR2

Pois é. Olha que tristeza! O pessoal achava que tinha sido criterioso na análise dos dados, mas, como sempre, o erro estava na base de dados, que os alunos sempre insistem em menosprezar (dá preguiça, eu sei, quando se usa o Excel, mas vocês verão a seguir que não é necessário voltar à ele para descobrir a fonte de quase todo o mal…).

Pensei: como resolver isto? Geralmente os alunos usam a internet para qualquer busca que não esteja relacionado aos temas das aulas, mostrando que a China realmente vai dominar o mundo com um pé nas costas (e com mais seriedade fiscal que o desgoverno brasileiro…) e não a usam adequadamente. Logo, este não foi o meu caminho.

Outro erro comum é fazer uma busca pretenciosa em língua portuguesa. Por que? Porque uma parcela minúscula do mundo fala português. Qualquer um sabe que a linguagem científica é a inglesa, aquela que, aliás, a gente aprende nas escolas (embora tenha um povo que queira baixar mais o nível, tornar o ensino de inglês optativo e obrigar as crianças a se tornarem comedores de alfafa mas que saibam falar castelhano e, quem sabe, fazê-las trabalhar para as FARC…). Logo, também não fui em busca de auxílio luso-brasileiro.

Antes de prosseguir, justiça seja feita, existe uma iniciativa ótima em língua portuguesa, entretanto, muito divulgada pelo Cinelli, que é a versão tupiniquim do StackOverflow. Iniciativa louvável, é verdade, mas ainda com pouco conteúdo. Será ótimo se mais gente boa como ele continuar usando esta plataforma, mas ainda não dá para ficar feliz com a mesma.

De qualquer forma, eu, como todo aluno (ou professor) esperto, fui aos livros, à internet, e eis a solução, elegante, em duas linhas de comando (embora eu vá lhe apresentar três):

# http://stackoverflow.com/questions/5992082/how-to-remove-all-whitespace-from-a-string-in-r
library("stringr")
x$pibpercorrigido<-str_replace_all(string=x$pibper, pattern=" ", repl="")
x$pibpercorrigido2<-as.numeric(x$pibpercorrigido)

Pois é. Eu procurei nos livros e achei a dica acima. Não vai mais ajudar na nota dos alunos, mas gerações futuras podem se salvar. Repare que fiz dois comandos. No primeiro, apenas substituo os espaços vazios por nada (é, nada), criando uma variável nova para minha base de dados “x”. Na segunda linha, crio uma nova variável (depois vou me livrar da primeira, mas sou um sujeito desconfiado…) que é a anterior encarada como “número”.

Pronto. Resolvido o problema. Fica a dica para você, que já recebeu base de dados com problemas como este. Cá para nós, muito mais fácil resolver no R do que no Excel.

p.s. Sim, eu testei. Fiz a nova regressão e nada de problemas.