R para Não Programadores – [4] Um Mapa e Dados das Capitais do Brasil – Norte e Nordeste – Curso Prático

November 15, 2016 no comments Posted in R para não Programadores

Seguindo com o nosso projeto de uma aplicação web que exibe mapas e marca localizações específicas, aqui mais um trecho.

Prefiro seguir em doses homeopáticas uma vez que esse conteúdo é voltado principalmente para interessados de outras áreas que não as ligadas a Computação e sem prévia experiência com programação.

Chegou aqui direto e não sabe do que estou falando, venha primeiro aqui. Curso R para Todos.

Nesse módulo o que fizemos de diferente em relação aos anteriores é que os nossos dados tem como origem uma arquivo externo e não está mais codificados no corpo do programa. Isso é super interessante porque uma vez satisfeitos com o produto final, podemos exibir dados de qualquer lugar do planeta apenas alterando o arquivo de dados e não mais o programa em isso. Assim um “usuário” do nosso programa não precisa saber como o mesmo funciona, ampliando o alcance da nossa aplicação. Ao chegar nesse estágio amigo, você agora também é um “desenvolvedor”, meus parabéns.

Já instalou o R e o RStudio, precisa de ajuda?  É só perguntar nos comentários abaixo.

Já antecipo que ao final desse pequeno programa o seu ambiente de trabalho no RStudio, a sua área de trabalho deve ser semelhante a essa aqui.

Então vamos lá

Primeiro, preciso realçar o fato de como o código é conciso. Graças as bibliotecas existentes, muito é possível realizar com praticamente zero esforço de programação. Estamos no plano de aprender como usar “controles” que controlam rotinas que produzem determinados resultados. Tudo dentro do nosso plano de vôo! 🙂

Bibliotecas necessárias? Apenas duas,

Já instalou?  Esqueceu como se faz?  Fácil, no RStudio vá o menu Tools > Install Packages

Observe que posso instalar + de um pacote de cada vez, separados por vírgulas.

Que deve produzir uma saída similar a exibida a seguir em seu console.

Os nossos dados de exemplo são em grande parte oriundos da base de municípios do IBGE, levemente adaptados e estão em um subdiretório  dados/ > Veja como ficam no painel de arquivos do RStudio.

 

O arquivo disponibilizo ao final.  Ao clicar sobre o arquivo dentro da pasta de dados podemos importá-lo, ou chamar o Excel ou outro aplicativo padrão em sua máquina para abrir arquivos terminados em .xls ou .xlsx.

É uma boa coleção de dados para o nosso aprendizado.

Além dos dados que identificam cada capital, temos a Latitude, Longitude, Altitude e Área do Município.

O pacote read_xls facilita a nossa vida, ainda que preciso adiantar que dependendo da origem do arquivo, windows/mac/linux, sistema americano ou nacional, podemos as vezes encontrar dificuldades com acentos e separação das colunas. Assunto para outro dia.

ao final dessas duas linhas e sem erros, teremos um “data frame” chamado capitaisMetrico com todos os dados da planilha anterior. Um data frame é uma estrutura de dados que representa e armazena o nosso “banco de dados” e com ele podemos realizar coisas realmente poderosas em R.

>>>  PAUSA para falar de data frames e do console

Quando importamos um data frame, nada mais prudente que no modo console, verificar o que foi lido, nomes das colunas, principais grandezas. Aqui uma dicas básicas.

Quais são os nomes das colunas/campos do data frame?  Basta digitar o comando abaixo no painel “console” do RStudio.

Para que saber o nome?  Pois precisaremos fazer referências as essas colunas quando quisermos acessar os dados que lá estão. Veja esse caso, digitando  capitaisMetrico$NM_MUNICIPIO no console recebo de volta todas as capitais que foram importadas do arquivo Excel.

Percebam o “mole” que o RStudio nos oferece, começamos a digitar o nome do data frame e ele se oferece para completar o nome. Digitamos o “$”e ele lista todos campos/colunas que existem no data frame, daqui para frame apelidado de “df”, ok?

Pronto lá estão elas.

>>  FIM da PAUSA para falar de data frames e do console

Voltando ao nosso código.

Precisamos contornar uma pequena dificuldade. O read_xls importou os dados  de colunas numéricas como latitude, longitude, etc, como “texto”, e desse modo não poderemos fazer contas, filtrar etc como números, dái esse trecho a seguir, onde valores são convertidos.

Observem 2 coisas: o uso do “$” para separar o nome do df do nome da coluna e uma função do R, “as.numeric” que converte, quando possível, uma sequência de texto em números. O quando possível é por que a sequência texto precisa “fazer sentido” enquanto um número. Se você tentar transformar  “%ˆ$ABCS” irá obter um NA, representando que não foi possível converter.

Tente no console

Entre os campos do nosso df, capitaisMetrico, uma delas informa a Região a qual pertence a capital.

Ora, o  que que o nosso código faz é justamente isso, um filtro no data frame, para depois exibir no mapa os dados filtrados.

O que fizemos ai acima foi criar um novo df, “regiaoNNE” que é o resultado de filtro em nosso df original.

O filtro é simples, ele retorna todas as linhas nas quais na coluna “Região” temos o valor “Norte”ou “Nordeste”.

com 2 “pegadinhas”:

  • em R o teste de igualdade é um duplo “=”  e,
  • o teste de OU usa o operador “|”

Uma variante usada frequentemente é quando não só queremos filtrar as linhas mas apenas mostrar algumas colunas do nosso df. Por exemplo apenas o nome do municipio, região e altitude seria assim:

Depois do filtro de região, enumeramos as colunas desejadas com

Resultado:

Então é isso. Filtrado o nosso df para conter apenas as capitais do Norte e do Nordeste, voltamos ao nosso Leaflet, ja usado nas etapas anteriores, alterando a origem dos dados e nomes dos campos de acordo com o nosso df atual.

é comando addMarkers do pacote leaflet que informa ao leaflet os limites do nosso mapa e faz o enquadramento adequado. Os nomes das capitais ao se clicar em cada marcador são fornecidos pela coluna NM_MUNICIPIO , em

e mágica está feita.

 

Na próxima, finalmente teremos uma página html para mostrar para os amigos.

Dúvidas?  Use os comentários.

João Carlos

Leave a Comment

Related Story
%d bloggers like this: