R para Não Programadores – [5] Pausa para falar de filtros em data frames, mapas e outros – Curso Prático

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

No módulo anterior, paramos no código abaixo e ele inclui a seguintes funcionalidades:

  1. le um arquivo excel com dados de capitais do brasil;
  2. filtra as capitais que estão na região norte e nordeste;
  3. gera um mapa com 2 camadas de “tiles” e
  4. plota marcadores sobre essas cidades que respondem ao clique exibindo os respectivos nomes.

Antes de prosseguir, vamos fazer uma pausa, e falar um pouco mais sobre o ambiente do RStudio e de como explorar os valores dos nossos dados.

Um bom exercício para o Leitor seria a modificação dos estilos dos mapas alterando os provedores de mapas.

Percorra a lista de publicações e você irá encontrar aqui, indicações de alguns valores possíveis com visuais alternativos.

A função addProviderTiles, usada para adicionar camadas de representação de blocos de imagens, tem como primeiro parâmetro o nome do provedor e o estilo em particular.

Outro pequeno exercício que o leitor deve se permitir é explorar os dados das capitais e procurar criar outros sub-conjuntos de dados, por exemplo quais a capitais que estão acima de uma determinada altitude?

Sabendo que o data frame contem os dados das capitais e que uma de suas colunas, a ALT, representa a altitude da cidade, primeiro passo deveria ser explorar esses dados, explorar os seus valores.

Um detalhe importante a registrar é que no ambiente R, após execução de um script que cria variáveis como o data frame capitaisMetrico, os seus valores lá ficam até que sejam removidos ou substituídos por outros de mesmo nome.

Execute o script acima e logo depois inspecione as variáveis do seu ambiente no painel “Environment” do RStudio, mas antes vamos apagar tudo, remover todas as variáveis que estão na memória. Clique no ícone da vassorinha amarela.

 

Observe o resultado logo após clicar no ícone.

Verifique o resultado caso peça no console, a listagem do data frame capitaisMetrico:

Erro, capitaisMetrico not found.

Um detalhe, se quiser limpar todas as mensagens da área de console experimente CTRL + L e observe todas as mensagens anteriores serem removidas.

A partir desse ponto vamos seguir uma pequena seção interativa com o R no Rstudio.  Vamos executar trechos do script e observar como o ambiente responde aos nossos comandos.

Abaixo a imagem do status atual do ambiente antes da execução do script.

Podemos executar o script via o ícone SOURCE, no canto superior direito, mas isso vocês já sabem. Outra alternativa é selecionar um trecho do script e digitar CTRL + ENTER. Isso é legal porque podemos testar trechos de nossos programinhas. Ao invés de executar tudo de uma só vez, vamos testando pequenos trechos e observando os efeitos.

Abaixo foram selecionadas com o mouse as linhas 1 a linha 20. Nessas linhas os comandos que lá estão fazem o seguinte: 1) invocam os pacotes que iremos usar, leaflet, readxml e htmlwidgts, 2) o diretório de trabalho será ajustado para a pasta a onde está o script e 3) por fim o arquivo  é lido e conteúdo da aba número 1 da planilha é armazenada em um data frame que chamei de capitaisMetrico. O nome é irrelevante, poderia ser outro qualquer (meia verdade, existem regras de formação de nomes de variáveis), desde que ao longo do programa seu uso seja consistente com o que pretendemos realizar.

Ao digitar CTRL + ENTER apenas a parte em azul será executada.

E os efeitos?

Diferentemente de quando usamos o ícone “source”, agora no console os comandos são exibidos como se fossem digitados por nós, um a um, é isso que o RStudio está fazendo por nós, apresentando ao interpretador R os comandos que estão no script, um a um. Em caso de algum comando com erro, a sequência é interrompida e uma mensagem de erro exibida.

Interpretadores são muito “exigentes”, os comandos devem seguir regras restritas e qualquer falha, como o esquecimento de uma vírgula, pode ser fatal, mas não mortífero :).

Voltando, veja no Environment

Temos um data framede nome capitaisMetrico com 27 observações  ou linhas e 13 variáveis ou colunas. Clique no nome “capitaisMetrico” e observe que uma nova aba surgiu, como em uma aba de planilha de Excel.

Uma novidade hiper cool dessa nova versão do RStudio é que a aba é destacável. Clique no nome da aba e arraste para fora da área do RStudio e veja o efeito. Se você tem 2 monitores, já viu como isso vai ajudar em suas análises de dados.

Voltando agora aos dados!

O que temos na coluna ou campo ALT?  Podemos olhar diretamente na planilha,

o que até ajuda para se ter uma noção se os dados foram importados corretamente, mas que não será de muita utilidade para uma lista grandes de números.

Ainda que …, existe 1 pequeno ícone de meia seta ao lado de cada nome de campo, ícone esse  que permite ordenar o todo o data frame de acordo com os valores da coluna selecionada, seguindo do maior para o menor ou na ordem inversa, ou a ordem alfabética se a coluna for de dados do tipo caracter.

Observe que os dados estão fora de ordem, mesmo clicando no ícone e a razão é simples, nós não executamos o script todo e você deve se lembrar da lição anterior que a função read_xls “leu” esses dados como caracteres e não como números.

Logo após no script, temos o  trecho a seguir que converte os caracteres em números via a função “as.numeric”.

Fique atento pois existem várias as.<AlgumaCoisa>  ao seu dispor. Podemos ter um vislumbre no console, digite “as.” e aguarda um pouquito, e veja,

que o RStudio lhe apresenta um menu de comandos que se iniciam com “as.”  e ainda oferece um “ajuda” mínima e indicação para se clicar em F1, para um Help mais completo.

 

Sem mais delongas vamos executar todo script e voltar ao ponto que paramos no lição anterior.

Após clicar em SOURCE, o programa de executar graciosamente e para com apenas uma mensagem.

Nenhum mapa!  ???   Pq?

No modo SOURCE o mapa não é gerado no painel a não ser que seja envolvido pelo comando PRINT. Como aqui

Outra alternativa seria retornar ao script, selecionar a variável “mapa” e CTRL + ENTER

Ok, falei, falei, e onde está a famosa altitude das cidades?

Vá ao console e digite  capitaisMetrico$ALT ou comece a digitar e espere pelas opções

o retorno é o conjunto de valores existentes

Qual a menor altitude (min), a maior (max), a média (mean), mediana (median)?

E ai começamos a ter contato com a extensa lista de funções matemáticas e estatísticas ao nosso dispor.

Quem sabe um gráfico rápido, sem qualquer sofisticação? “plot”

Um histograma para se ter uma primeira impressão como essas altitudes se distribuem?

 

Os gráficos acima são produzidos pelo pacote base do R, mas a vedete na área gráfica é a biblioteca “ggplot” que veremos em outro momento e que produz gráficos com um look and feel profissionais.

O histograma indicou que a  grande maioria das capitais estão em altitudes de 0 a 200 metros, mas podemos ter um retrato mais preciso com um sumário estatístico dos dados. E entre as dezenas de opções de sumários, ficaremos com a mais simples, a “summary”.

 

Esse sumário ficou poluído pelos campos do tipo caracter. A informação de que aquelas colunas possuem 27 linas não acrescenta muito a nosso conhecimento sobre os dados, mas saber os limites e intervalos dos numéricos  é de fundamental importância.

Uma segunda versão comando a seguir exemplifica como podemos exibir os dados de apenas 2 colunas, AreaUF, a área do município, e ALT a altitude do mesmo.

Um olhar de lupa sobre o comando revela detalhes importantes. Primeiro capitaisMetrico é seguido de “[,” e essa “,” separa a referência a linhas e colunas de um data frame. Se nada é explicitado antes da vírgula então todas as linhas serão exibidas. Logo depois da vírgula é reservado para a representação das colunas. Nada após a vírgula, representa todas as colunas. No caso aqui o que temos depois da vírgula é  c(“AreaUF”,”ALT”), e o “c” antes do parêntesis indica um vetor e com valores entre aspas, um vetor de caracteres, os nomes entre aspas devem corresponder aos nomes das colunas ou campos do data frame. Caso os nomes sejam digitados de modo a não corresponderem exatamente ao nome de qualquer atributo, mensagens de erro serão exibidas e nosso script não prosseguirá.

Experimente no console apenas listar esse trecho do data frame,

e lá estão, todas as linhas de apenas 2 colunas.

E podemos listar apenas algumas linhas? As cinco primeiras?

Lá está. Antes da vírgula  1:5.

Bom momento para perceber que o R gera sequências com o uso do operador “:”.  Digite no console 1:5,

Voltando ao sumário apenas dessas 2 colunas numéricas. Temos o valor mínimo, máximo, média, mediana, e o primeiro e terceiro quartil. Não conhece os quartis?  Ok, leia aqui, ou aguarde uma outra ocasião mais a frente.

Bem, agora estamos prontos para uma variante do nosso mapa anterior, ao invés de capitas do Norte Nordeste, quais seriam as capitais cuja altitude é superior a 200 metros?

Como não queremos destruir o conjunto de dados original vamos usar um data frame de apoio e  que irá receber as linhas que irão passar no nosso teste de altitude.

Usarei o nome  capitaisALT, apenas para lembrar “por alto” qual é o nosso objetivo, mas um bom programa deve sempre ser comentado de forma equilibrada. Nem comentários de menos, de modo a não se reconhecer um que script faz, nem comentários em excesso que tornem a leitura pesada. O símbolo “#” em qualquer ponto de uma linha faz com que a partir daquele ponto todo o resto do texto seja desconsiderado e tratado com um um comentário.

Aqui vai

Detalhes para ficar atento, “capitaisMetrico$ALT > 200”  antes da vírgula é o nosso FILTRO ou SELETOR de linhas de nossa tabela. Após a vírgula está em branco, indicando que desejamos todas as colunas.

No environment, lá estão elas.

Então podemos voltar ao nosso script original e substituir as referencias ao data frame capitaisMetrico por capitaisALT e visualizar o resultado.

Observe para reflexão que fizemos aqui algo que não é recomendável em programação: copiamos e colamos um trecho de programa apenas para poder fazer a mesma coisa, no caso plotar o mapa.

Extrapolando, você pode imaginar um caso em que houvesse a necessidade de se produzir 10 mapas diferentes, cada qual com um filtro diferente, teríamos então que reproduzir o mapa 10x com as alterações, o que não é razoável.

Solução existe, são as “funções” que veremos em outro momento. De fato já usamos várias até aqui, mas iremos estudar como criar as nossas próprias funções e tirar partido da simplificação que elas nos oferecem.

Bem, ao meu ver essa seção foi produtiva. Avançamos em manipulação de data frames, algumas funções básicas para sumários estatísticos de dados e principalmente já sabemos quais são e onde estão as capitais do Brasil com mais de 200 metros de altitude.

Gostou?  Compartilhe, please!

Arquivos para download, apenas após registro. (sem estresse, estou usando apenas para fins estatísticos)

Downloads

João Carlos

 

Leave a Comment

Related Story
%d bloggers like this: