Excluindo linhas missing no R

Essa é bem curtinha. Já expliquei como tirar os missings de seus cálculos no post Evitando “NA” nos cálculos do R, mas às vezes a gente quer construir uma base sem esses valores. Para fazer isso no R é simples, basta usar a função na.omit():

matriz_teste
      [,1] [,2]
 [1,]  10    5
 [2,]  NA    2
matriz_teste_sem_na = na.omit(matriz_teste)
matriz_teste_sem_na
      [,1] [,2]
 [1,]  10    5
E aí, curtiu o post?

E aí? Gostou do conteúdo? Se inscreva para receber todas as novidades. Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e, principalmente, compartilhar com seus amigos. De verdade, isso faz toda a diferença. Além disso, você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @UniDosDados, no Instagram @universidadedosdados ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal Universidade dos Dados.

Aproveite e adquira sua camiseta de data science na LOJA DA UNIVERSIDADE DOS DADOS. Vai ficar estiloso e me ajudar neste projeto!

BONS ESTUDOS!

Frequência no R utilizando o pacote Hmisc

Como estou acostumado com o proc freq do SAS para validar algumas informações e ver se faz sentido o que estou fazendo, procurei algo semelhante no R. Encontrei o describe() do pacote Hmisc. Claro que deve existir outro pacote que faz isso, mas esse foi o primeiro que encontrei.

O proc freq do SAS, como o nome já indica, calcula a frequência de seus dados. Por exemplo, se você tem uma base que contém homem e mulher, você pode utilizar um código parecido com esse:

proc freq data = base_de_dados; table sexo; run;

Onde base_de_dados seria o nome da sua base e sexo o nome da coluna contendo o sexo das pessoas.Esse código retorna para você o número e a porcentagem de pessoas de cada sexo. Analogamente, você poderia fazer o seguinte código no R:

install.packages("Hmisc");
library("Hmisc");
describe(base_de_dados$sexo);

E o resultado seria o mesmo.

Para não ficar muito abstrato, segue um exemplo com a base de dados german_credit_21 já utilizada no post Árvore de Decisão no R. Eu tinha discretizado algumas variáveis naquela época, e estava refazendo isso hoje. Apenas para garantir que tinha feito da forma correta, utilizei o describe(). Veja que ele me retornou que 30% da minha base possui Creditability ‘bad’ e 70% ‘good’. Além disso, pude ver também como foi dividido o CreditAmount. Bem simples, uma função só e você já tem uma bela descrição para trabalhar:

install.packages("Hmisc");
library("Hmisc");
describe(dados);

 

Excluindo colunas no R

Uma dica rápida, mas que ajuda bastante.

Vamos supor que você tenha uma tabela com 7 colunas, e você queira excluir algumas colunas dela para sua análise. Como você faz?

Simples, utiliza o c() e coloca o sinal de negativo antes do número da coluna que você quer excluir. Como exemplo, temos a seguinte tabela com o preço médio dos combustíveis no Brasil, levantado pela ANP:

Veja que a primeira coluna é uma data e a última possui diversos NAs, o que atrapalha diversas operações.

Se você tentar utilizar a função log(), por exemplo, você vai ter um erro:

log(ANP_COMBUSTIVEIS[,c(-1,-7)])
PRECO_REV_ETANOL PRECO_REV_GASOLINA PRECO_REV_GLP PRECO_REV_GNV PRECO_REV_DIESEL
1 0.009257021 0.5196268 2.844613 -0.31471074 -0.18717331
2 0.014198719 0.5370780 2.873706 -0.29988962 -0.16251893
3 0.026154957 0.5411608 2.884778 -0.30042965 -0.15059036
4 0.038354954 0.5758828 2.930244 -0.26748737 -0.10725119
5 0.032079893 0.5767257 2.937520 -0.24910259 -0.09695153
6 0.028490270 0.5736314 2.928181 -0.24718013 -0.09673119
7 0.018821754 0.4621605 3.084173 -0.24654013 -0.12386399

Agora, se você utilizar c(-1,-7) na posição da coluna na matriz, você consegue seu resultado sem problema:

log(ANP_COMBUSTIVEIS[,c(-1,-7)])
 PRECO_REV_ETANOL PRECO_REV_GASOLINA PRECO_REV_GLP PRECO_REV_GNV PRECO_REV_DIESEL

1 0.009257021 0.5196268 2.844613 -0.31471074 -0.18717331
2 0.014198719 0.5370780 2.873706 -0.29988962 -0.16251893
3 0.026154957 0.5411608 2.884778 -0.30042965 -0.15059036
4 0.038354954 0.5758828 2.930244 -0.26748737 -0.10725119
5 0.032079893 0.5767257 2.937520 -0.24910259 -0.09695153
6 0.028490270 0.5736314 2.928181 -0.24718013 -0.09673119
7 0.018821754 0.4621605 3.084173 -0.24654013 -0.12386399

Veja o que acontece se você der um View(ANP_COMBUSTIVEIS[,c(-1,-7)]:

Se você quiser excluir da coluna 1 até a coluna 5, você pode simplesmente fazer ANP_COMBUSTIVEIS[,c(-1:-5)], afinal:

c(-1:-5)
[1] -1 -2 -3 -4 -5

Árvore de Decisão no R

Árvore de decisão é um modelo simples e extremamente útil para fazer predições. É fácil de explicar para as pessoas mais alheias ao mundo de ciência de dados e machine learning. Além disso, é simples de identificar o poder preditivo das variáveis, requer pouco pré-processamento, etc. Hoje, vou apresentar o código em R para uma árvore de decisão. Continuar a ler “Árvore de Decisão no R”

Evitando “NA” nos cálculos do R

É sempre um problema trabalhar com NAs no R. Veja o código abaixo, onde foi criada uma matriz 2×2 contendo um elemento NA:

matriz_teste = array(data=c(10,NA,5,2), dim=c(2,2));
matriz_teste;

Para calcular a média das colunas, deveríamos utilizar a função colMeans() do R, mas veja que a sintaxe abaixo retorna um erro:

colMeans(matriz_teste);

O R não consegue calcular a média por causa desse NA. Porém, o R é muito inteligente, e para calcular a média quando tiver um NA no caminho, você não precisa de muito esforço, basta acrescentar o  argumento na.rm = TRUE:

colMeans(matriz_teste, na.rm = TRUE);

Veja que ele simplesmente ignora o elemento NA. É como se houvesse apenas um elemento na coluna. Se a coluna tivesse quatro elementos, sendo que dois eram NAs, a média seria calculada como a soma dos dois elementos não NAs dividida por dois.

E isso funciona também para a função que calcula a soma da coluna:

colSums(matriz_teste, na.rm = TRUE)

Simples, não?

Com relação a função chamada array(), leia o conteúdo do Wikipedia sobre arranjo.

Primeiros passos no R Studio

Para facilitar a vida dos interessados em programação, estatística e/ou econometria, resolvi fazer esse post um pouco mais completo para quem está iniciando no R. Sendo mais específico, no R Studio.

O QUE É O R?

Wikipedia: R é uma linguagem e também um ambiente de desenvolvimento integrado para cálculos estatísticos e gráficos.

Em outras palavras, R é uma linguagem de programação gratuita que cientistas de dados e estatísticos utilizam para manipular dados de diversas formas.

O R Studio é uma interface para o R, com diversas utilidades diferentes que a tornam uma ferramenta mais simples em comparação ao R. O R Studio possui diversas ferramentas como seus painéis que o tornam mais prático e, por esse motivo o utilizaremos aqui.

INSTALAÇÃO

  • Na tela inicial você já vai ver DOWNLOAD RSTUDIO, clique no link
  • Em seguida, vá em DOWNLOAD RSTUDIO DESKTOP
  • Depois de baixado é simples, é só clicar no instalador e ir clicando em próximo e/ou avançar, como a maioria dos programas, não tem erro.
  • Na tela inicial você vai ver que o RStudio tem 4 janelas, diferente do R.

LAYOUT

Com relação às 4 janelas do R Studio:

  • No topo a esquerda é onde você vai escrever seus códigos. Você pode ter várias janelas de códigos, para abrir mais uma basta ir no sinal ‘+’ logo abaixo de FILE. Depois que você escrever seu código, você deve selecionar a linha que gostaria de executar e clicar em RUN.
  • Assim que você executar seu código você vai ver alterações no CONSOLE, a tela abaixo à esquerda. Você também pode escrever o código nessa tela, porém, é muito mais complicado manusear e fazer alterações. Seu código ficará mais desorganizado.
  • Acima a direita você tem duas abas: Environment e History. Environment, eu recomendo que vocês não se preocupem muito. Basicamente, você vai ter seus objetos nessa aba, seus dados e variáveis criadas. Em History você terá o histórico de seu script, ou seja, todo o código que você for executando vai aparecer lá. Isso é útil, pois caso você feche o R Studio e escolha salvar seu workplace, ao abri-lo você não perderá o histórico. Você terá seu script lá, facilitando o entendimento do que você estava executando;
  • Abaixo a direita uma outra janela que vai facilitar muito sua vida, nela há 5 abas: FILES, PLOTS, PACKAGES, HELP e VIEWER.

Em Files você terá o endereço do seu working directory. Basta executar o código getwd() que você saberá que endereço é aquele na aba Files. No R Studio você pode mover, renomear e deletar arquivos no seu computador. Esse diretório é onde você salva seus scripts e output no R.

Plots é onde você irá visualizar seus gráficos.

Packages possui uma lista de pacotes que você pode selecionar e instalar na hora.

Help é a aba de ajuda do R Studio. Se você é daqueles céticos do Help nos softwares, aqui no R Studio você vai mudar de opinião, realmente ajuda muito.

PACOTES

Os pacotes do R nada mais são do que conjunto de funções, dados e códigos compilados. Os pacotes fornecem funções que algum usuário já criou e você pode utilizá-las. Ou seja, para cada tema que você queira trabalhar, você pode buscar um pacote com funções que realizem todas as manipulações que você deseja.

Por exemplo, eu gostaria de trabalhar com séries temporais. Ao buscar “Time Series” dentre os pacotes existentes, eu vou encontrar alguns pacotes como AnalyzeTS, arfima, astsa, etc.

Você pode procurar os pacotes existentes através do próprio google, ou então ir direto no CRAN, onde os pacotes são mais confiáveis:

https://cran.r-project.org/web/packages/available_packages_by_name.html

Há mais de 100 pacotes com “Time Series” na descrição, como saber qual utilizar?

Ao clicar no nome de um dos pacotes você abrirá a seguinte página:

A página acima é idêntica para todos os pacotes. Todos os pacotes R terão o Reference Manual, com essa aparência:

Nesse manual você verá todas as funções que o pacote possui e uma breve explicação de cada uma. Com base nisso, você deve escolher qual pacote é mais apropriado para você. Ou então, o que eu costumo fazer sempre: GOOGLE!

PRIMEIRAS MANIPULAÇÕES

Conforme já disse acima, na primeira janela, no topo a esquerda, escreveremos nosso código. É lá então que vamos começar a brincar!

A partir daqui, vou tentar ser mais direto. O código que vou postar é exatamente a saída do Console, sendo que em azul teremos o código que escrevi e em vermelho o output do R. Você notará o símbolo “>” antes de cada linha de código escrita e o [1] antes do output do R.

Primeiramente, o R, assim como outras tantas linguagens, serve como uma calculadora. Afinal, muitas vezes você precisará manipular seus dados, fazer algumas alterações nos valores de tabelas, e para isso é importante saber os operadores aritméticos do R, que são: +, -, * e / para adição, subtração, multiplicação e divisão respectivamente. Veja abaixo exemplos com operações feitas no R:

> 2+2
[1] 4
> 10-2
[1] 8
> 2*5
[1] 10
> 10/2
[1] 5

Ao escrever o código na primeira janela, você precisa separar cada tarefa que você quer que o R execute pulando linhas ou então utilizando “;”. Eu prefiro pular linhas.

Além dos operadores, o R possui algumas funções básicas como o log, exponencial e raiz quadrada:

> log(100)
[1] 4.60517
> exp(10)
[1] 22026.47
> sqrt(10000)
[1] 100

O R também possui operadores lógicos:

> 10<2
[1] FALSE
> 10>=10
[1] TRUE

Resumo dos operadores:

CRIANDO VARIÁVEIS

Para criar novas variáveis, atribuindo algum valor que você deseja, basta utilizar o símbolo “=” ou “<-“:

> x <- 100
> y = 10
> x*y
[1] 1000

No caso de se atribuir diversos valores, ou seja, criar um vetor, você utiliza a função c(). Veja os exemplos abaixo com o comentário de cada comando utilizando ‘#’:

> #x recebe os números de 1 a 4
> x=c(1,2,3,4)
> x
[1] 1 2 3 4

Podemos gerar nossas próprias sequências no R, seja uma sequência simples, com intervalo entre os elementos ou com o comprimento que gostaríamos:

> #y recebe a sequência de 1 a 10
> y=c(1:10)
> y
[1]  1  2  3  4  5  6  7  8  9 10
> #z recebe a sequência de 2 a 11
> z=c(2:11)
> z
[1]  2  3  4  5  6  7  8  9 10 11
> #s recebe a sequência de 1 a 10 com diferença de duas unidades
> s=seq(1,10, by=2)
> s
[1] 1 3 5 7 9
> #r recebe a sequência com 10 números, começando de -10 com diferença de 0.2 unidades
> r=seq(length=10,from=-5,by=.2)
> r
[1] -5.0 -4.8 -4.6 -4.4 -4.2 -4.0 -3.8 -3.6 -3.4 -3.2

Podemos realizar qualquer tipo de operação com os vetores. Se o multiplicarmos um número qualquer pelo vetor, ele irá multiplicar cada elemento do vetor por esse número. A mesma lógica vale para divisão, soma e subtração:

> 2*w
[1]  6 10 14 18 22 26 30 34 38 42
> w+1
[1]  4  6  8 10 12 14 16 18 20 22

Ao realizarmos uma soma (ou subtração) entre vetores, os elementos na mesma posição realizam a operação:

> y+z
[1]  3  5  7  9 11 13 15 17 19 21

Visualizando seus gráficos

Em outros sites, você veria muito mais explicações antes de entrar neste tópico. Faz sentido, afinal, ainda há muito o que se aprender no R. Eu sequer mencionei caracteres, lidar com textos, missing, etc. Entretanto, queria fornecer uma introdução rápida para o leitor e já deixar o básico para que ele possa dar sequência sozinho no aprendizado. Como postarei constantemente, o leitor aqui poderá também consultar os posts futuros. Aqui, no entanto, quero ser breve. Vamos aos gráficos!

HISTOGRAMA E GRÁFICO DE DISPERSÃO

Já falei sobre histograma nesse post, e não tem segredo no R, basta utilizar a função hist(). Apenas para deixar mais interessante, vou mostrar como importar um arquivo em .txt utilizando a função read.table().

O arquivo .txt aqui utilizado é o turma_1 já mencionado acima, dessa vez eu o salvei no meu desktop:

read.table("C:/Users/Yukio/Desktop/turma_1.txt",header=TRUE)

Veja que se você simplismente digitar a linha de código acima, o seu software vai demonstrar toda a tabela. Se ela for muito extensa, é uma péssima ideia. Para isso, eu acho bem mais sensato nós atribuírmos a tabela a um elemento:

turma_1 = read.table("C:/Users/Yukio/Desktop/turma_1.txt",header=TRUE)

Se você quiser visualizar sua tabela no R Studio, uma boa idéia é utilizar a função View():

View(turma_1)

Veja que na janela inicial acima a esquerda você terá uma nova aba com sua tabela, isso é bem prático.

Vamos finalmente ao histograma das notas dos alunos:

hist(turma_1$notas)

E o gráfico de dispersão:

plot(turma_1$notas)

Quer um título no gráfico? Incluir algo diferente no eixo x? Alterar as legendas?
Simples, para legenda utilize xlab e ylab, para o título principal utilize o main, e para escolher os eixos, basta pensar que o R está lendo a função da seguinte forma: plot(eixo x, eixo y). Sendo assim:

plot(turma_1$faltas,turma_1$notas,main="Gráfico de Dispersão",xlab="Faltas",ylab="Notas")


Por fim, e se quisermos comprovar a existência ou não de uma correlação?

> cor(turma_1$faltas,turma_1$notas)
[1] -0.9793377

Pois bem, assim termina os primeiros passos no R Studio. Acredito que passar por tudo isso leve menos de uma hora e acrescenta uma baita bagagem. Vou continuar postando códigos de R, gráficos mais coloridos, novas funções, pacotes, etc. Como eu disse, esse daqui é só para ser o começo da sua jornada no R. Qualquer dúvida, é só comentar aí embaixo.

Erros? Por favor, me avise também!