Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linguagem R Básico

Linguagem R Básico

R é um ambiente de programação com um conjunto integrado de ferramentas de software para análise exploratória, manipulação de dados, cálculos, análises estatísticas e apresentação gráfica.

Claudia Farias

February 01, 2018
Tweet

More Decks by Claudia Farias

Other Decks in Programming

Transcript

  1. _R

  2. R é um ambiente de programação com um conjunto integrado

    de ferramentas de software para análise exploratória, manipulação de dados, cálculos, análises estatísticas e apresentação gráfica.
  3. Variáveis em R Permite armazenar um valor (ex: 4) ou

    um objeto (ex: uma função). # atribuição de variáveis > bananas <- 4 > laranjas <- 5 # imprime a soma das variáveis > laranjas + bananas # armazena o resultado em frutas > frutas <- laranjas + bananas
  4. Tipos de Dados Valores decimais são chamados numerics. Números naturais

    são chamados de integers. No entanto, integers também são numerics. Textos (ou Strings) são chamados characters. E os valores booleanos são ditos do tipo logics. # character > pergunta <- "qual a resposta para a vida o universo e tudo mais?" # numeric > resposta <- 42 # logic > tenho_dinheiro <- FALSE # verificar o tipo de dado da variável > class(pergunta) [1] "character"
  5. Aritmética com R + Adição - Subtração * Mutiplicação /

    Divisão ^ Exponenciação %% Módulo > 5 + 5 [1] 10 > 6 - 2 [1] 4 > 3 * 3 [1] 9 > (5 * 2) / 4 [1] 2.5 > 2 ^ 5 [1] 32 > 28 %% 6 [1] 4
  6. Operadores Lógicos < menor que > maior que <= menor

    ou igual que >= maior ou igual que == igual != diferente > 6 > 5 [1] TRUE > 6 < 2 [1] FALSE > 3 <= 3 [1] TRUE > 0 >= -9 [1] TRUE > “biscoito” != “bolacha” [1] TRUE
  7. Criando Vetores Em R, você cria um vetor com uma

    função de combinação c(), adicionando os elementos separados por vírgula entre parênteses. # vetor numérico > impares <- c(1, 3, 5) # vetor de strings > nomes <- c(“Renoir”, “Goya”, “Dalí”) # cálculos com vetores > impares * 3 [1] 3 9 15
  8. Nomeando Vetores Podemos dar nomes aos elementos dos vetores com

    a função names(). # criando um vetor > pessoa <- c(“Sherlock Holmes”, “Detetive”) # nomeando-o > names(pessoa) <- c(“Nome”, “Profissão”) # imprimindo pessoa > pessoa Nome Profissão “Sherlock Holmes” “Detetive”
  9. Soma entre Vetores É importante saber que se você somar

    dois vetores em R, ele irá somar os elementos de cada posição. O mesmo vale para outras operações # é bolacha ou biscoito? > bolacha <- c(12, 8, 20, 18, 20) > biscoito <- c(2, 12, 5, 3, 1) # total de entrevistados por dia > total = bolacha + biscoito > total [1] 14 20 25 21 21 # dias das entrevistas > dias <- c(“Seg”, “Ter”, “Qua”, “Qui”, “Sex”) > names(total) <- dias > total [1] Seg Ter Qua Qui Sex 14 20 25 21 21
  10. Cálculos com Vetores Para calcular a soma de todos os

    elementos do vetor, chamamos o método sum(). Também é possível comparar vetores. # total de entrevistados > total = bolacha + biscoito > total [1] 14 20 25 21 21 # soma de todos os valores > sum(total) [1] 101 # comparando vetores # bolacha é preferência nacional? > bolacha > biscoito [1] TRUE FALSE TRUE TRUE TRUE
  11. Selecionando Elementos Para selecionar elementos do vetor (como também de

    matrizes, data frames, listas...), podemos usar colchetes contendo o elementos que desejamos, podendo ser o índice ou o nome. Note que os índices começam por 1 e não por 0. > apostas = c(140, -50, 20, -120, 240) > dias <- c(“Seg”, “Ter”, “Qua”, “Qui”, “Sex”) > names(apostas) <- dias # retorna o primeiro elemento > apostas[1] [1] 140 # apostas no último dia > apostas[5] [1] 240 # selecionando por nome > apostas[“Ter”] [1] -50
  12. Selecionando Múltiplos Elementos Podemos selecionar vários elementos do vetor colocando

    um vetor com os índices que queremos no colchete. Ou podemos também utilizar a notação : (dois pontos) para buscar um range de elementos. # primeiro e terceiro elementos > apostas[c(1, 3)] [1] 140 20 # segundo e último elementos > apostas[c(2, 5)] [1] -50 240 # segundo a último elementos > apostas[2:5] [1] -50 20 -120 240 # selecionando por nome > apostas[c(“Seg”, “Qui”] [1] 140 -120
  13. Selecionando por Comparação Retorne apenas os elementos que satisfaçam um

    critério de comparação. O R sabe quando você passa um vetor de booleanos para seleção e retorna apenas os elementos com valores iguais a TRUE. > euro <- c(3.99, 4.12, 4.23) # compara cada elemento do vetor > maior_que_quatro <- euro > 4 > maior_que_quatro [1] FALSE TRUE TRUE # retorna os elementos maiores que 4 > euro[maior_que_quatro] [1] 4.12 4.23
  14. Matrizes Em R , uma matriz é uma coleção de

    elementos do mesmo tipo dispostos em um mesmo número de linhas e colunas (bidimensional). Podemos construir uma matriz utilizando a função matrix(). O primeiro argumento é uma coleção de elementos. byrow indica que a matriz é preenchida por linha. nrow diz quantas linhas a matriz deve ter. # criando uma matriz > matrix(1:9, byrow = TRUE, nrow = 3) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 # o primeiro argumento é um vetor # 1:9 é um atalho para # c(1,2,3,4,5,6,7,8,9) # byrow indica que a matriz é # preenchida pelas linhas # nrow indica que a matriz deve # ter 3 linhas
  15. Analisando Matrizes Como exemplo, vamos analisar dados da série Game

    of Thrones para visualizar os números de mortes e cenas com nudes no decorrer das temporadas. # game of thrones > mortes <- c(59, 130, 87, 181, 246, 540) > nudes <- c(21, 12, 9, 10, 12, 7) > got_dados <- c(mortes, nudes) > got_matriz <- matrix(got_dados, byrow = TRUE, nrow = 2) > got_matriz [,1] [,2] [,3] [,4] [,5] [,6] [1,] 59 130 87 181 246 540 [2,] 21 12 9 10 12 7
  16. Nomeando Matrizes Nomear linhas e colunas da matriz facilita a

    análise de dados como tabela e também é útil para nos ajudar a selecionar elementos. Utilizamos as funções rownames() e colnames() para isto. # nomes > temporadas <- c(“T01”, “T02”, “T03”, “T04”, “T05”, “T06”) > categorias <- c(“Mortes”, “Nudes”) > colnames(got_matriz) <- temporadas > rownames(got_matriz) <- categorias > got_matriz T01 T02 T03 T04 T05 T06 Mortes 59 130 87 181 246 540 Nudes 21 12 9 10 12 7
  17. Somando elementos da Matriz Em R, a função rowSums() calcula

    o total para cada linha da matriz. Esta função cria um novo vetor. A função colSums() soma os valores por coluna. # criando a matriz > got_matriz <- matrix(got_dados, byrow = TRUE, nrow = 2, dimnames = list(c(“T01”, “T02”, “T03”, “T04”, “T05”, “T06”), c(“Mortes”, “Nudes”)) # totais, somando linhas > rowSums(got_matriz) Mortes Nudes 1243 71 # totais, somando colunas > colSums(got_matriz) T01 T02 T03 T04 T05 T06 80 142 96 191 258 547
  18. Adicionando uma Coluna à Matriz Podemos adicionar uma ou mais

    colunas com a função cbind(), que mescla matrizes e/ou vetores por coluna. # criando a matriz > got_matriz <- matrix(got_dados, byrow = TRUE, nrow = 2, dimnames = list(c(“T01”, “T02”, “T03”, “T04”, “T05”, “T06”), c(“Mortes”, “Nudes”)) # somando linhas > totais <- rowSums(got_matriz) > tudo_junto <- cbind(got_matriz, totais) > tudo_junto T01 T02 T03 T04 T05 T06 tota Mortes 59 130 87 181 246 540 1243 Nudes 21 12 9 10 12 7 71
  19. Adicionando uma Linha à Matriz Exatamente como cbind(), a função

    rbind(), adiciona linhas à matrizes e/ou vetores. # criando a matriz > got_matriz <- matrix(got_dados, byrow = TRUE, nrow = 2, dimnames = list(c(“T01”, “T02”, “T03”, “T04”, “T05”, “T06”), c(“Mortes”, “Nudes”)) # somando colunas > totais <- colSums(got_matriz) > soma_cols <- rbind(got_matriz, totais) > soma_cols T01 T02 T03 T04 T05 T06 Mortes 59 130 87 181 246 540 Nudes 21 12 9 10 12 7 totais 80 142 96 191 258 547 # totais de cenas fortes?
  20. Selecionando elementos da Matriz Similar a vetores, você pode utilizar

    colchetes para selecionar elementos específicos em uma matriz. Porém matrizes possuem duas dimensões, então precisamos informar a linha e a coluna separadas por uma vírgula. # criando a matriz > got_matriz <- matrix(got_dados, byrow = TRUE, nrow = 2, dimnames = list(c(“T01”, “T02”, “T03”, “T04”, “T05”, “T06”), c(“Mortes”, “Nudes”)) # primeira linha, segundo elemento > got_matriz[1,2] [1] 130 # linhas 1 e 2; colunas 2, 3 e 4 > got_matriz[1:2,2:4] T02 T03 T04 Mortes 130 87 181 Nudes 12 9 10
  21. [2] Selecionando elementos da Matriz Se você precisa selecionar todos

    os elementos de uma linha ou uma coluna, nenhum número é necessário antes ou depois da vírgula, respectivamente. # criando a matriz > got_matriz <- matrix(got_dados, byrow = TRUE, nrow = 2, dimnames = list(c(“T01”, “T02”, “T03”, “T04”, “T05”, “T06”), c(“Mortes”, “Nudes”)) # todos da primeira coluna > got_matriz[,1] Mortes Nudes 59 21 # todos da segunda linha > got_matriz[2,] T01 T02 T03 T04 T05 T06 21 12 9 10 12 7
  22. Aritmética com Matrizes As operações matemáticas em Matrizes funciona similar

    aos vetores: a operação será feita por elemento. # soma > got_matriz + 90 T01 T02 T03 T04 T05 T06 Mortes 149 220 177 271 336 630 Nudes 111 102 99 100 102 97 # multiplicação > got_matriz * 3 T01 T02 T03 T04 T05 T06 Mortes 177 390 261 543 738 1620 Nudes 63 36 27 30 36 21
  23. [2] Aritmética com Matrizes Da mesma forma, quando realizamos uma

    operação matemática com duas matrizes, a operação será feita elemento por elemento correspondente. # nudes x mortes > mortes <- got_matriz[1,] > nudes <- got_matriz[2,] > mortes / nudes T01 T02 T03 T04 T05 T06 2.80 10.83 9.66 18.10 20.50 77.14
  24. Factors O termo fator refere-se a um tipo de dados

    estatísticos usado para armazenar variáveis categóricas. A diferença entre uma variável categórica e uma contínua é que uma variável categórica pode pertencer a um número limitado de categorias. Já uma variável contínua pode corresponder a um número infinito de valores. Para criar fatores em R, fazemos uso da função factor(). # um simples vetor > respostas <- c(“Sim”, “Não”, “Sim”, “Sim”, “Não”) # convertendo em fator > yesno_fator <- factor(respostas) > yesno_fator [1] Sim Não Sim Sim Não Levels: Não Sim
  25. Tipos de Variáveis Categóricas Existem dois tipos de variáveis categóricas:

    uma variável categórica nominal e uma variável categórica ordinal. Uma variável nominal é uma variável categórica sem uma ordem implícita. Em contrapartida, as variáveis ordinais possuem uma ordem natural. # nominal # significa que é impossível dizer que “um vale mais do que o outro” (embora discordem) > animais <- c(“Coelho”, “Alce”, “Macaco”, “Michel Temer”) # ordinal > temperatura <- c(“Alta”, “Baixa”, “Moderada”, “Baixa”, “Alta”) > fator_temperatura <- factor(temperatura, order = TRUE, levels = c("Baixa", "Moderada", "Alta")) > fator_temperatura [1] Alta Baixa Moderada Baixa Alta Levels: Baixa < Moderada < Alta
  26. Tipos de Variáveis Categóricas Existem dois tipos de variáveis categóricas:

    uma variável categórica nominal e uma variável categórica ordinal. Uma variável nominal é uma variável categórica sem uma ordem implícita. Em contrapartida, as variáveis ordinais possuem uma ordem natural. # nominal # significa que é impossível dizer que “um vale mais do que o outro” (alguns discordam) > animais <- c(“Coelho”, “Alce”, “Macaco”, “Michel Temer”) # ordinal > temperatura <- c(“Alta”, “Baixa”, “Moderada”, “Baixa”, “Alta”) > fator_temperatura <- factor(temperatura, order = TRUE, levels = c("Baixa", "Moderada", "Alta")) > fator_temperatura [1] Alta Baixa Moderada Baixa Alta Levels: Baixa < Moderada < Alta
  27. Factor Levels É possível alterar os nomes dos níveis (levels)

    em R com a função levels(). # vetor > generos <- c(“H”, “M”, “M”, “M”, “M”) # fator > generos_factor <- factor(generos) > levels(generos_factor) <- c(“Mulher”, “Homem”) > generos_factor [1] Homem Mulher Mulher Mulher Mulher Levels: Homem Mulher
  28. Resumindo A função summary() nos retorna uma visão geral rápida

    do conteúdo de uma variável. # vetor > generos <- c(“H”, “M”, “M”, “M”, “M”) # fator > generos_factor <- factor(generos) > levels(generos_factor) <- c(“Mulher”, “Homem”) > summary(generos_factor) Homem Mulher 1 4
  29. Comparando Factores Quando lidamos com variáveis categóricas ordinais, podemos realizar

    comparações. # vetor > velocidade <- c(“R”, “L”, “R”, “L”, “L”) # fator > fator_velocidade <- factor(velocidade, ORDERED = TRUE, c(“Rápido”, “Lento”)) > summary(fator_velocidade) Lento Rápido 3 2 > rubinho <- fator_velocidade[2] > bolt <- fator_velocidade[3] > bolt > rubinho [1] TRUE
  30. Data Frames Com frequência, precisamos trabalhar com conjuntos de dados

    de contêm diferentes tipos de dados ao invés de um, como vimos em Matrizes. Um Data Frame tem as variáveis de um conjunto de dados como colunas e observações como linhas. Criamos um data frame através da função data.frame() com vetores como argumentos. # vetores do mesmo tamanho organizados por # colunas > apps <- c(“Facebook”, “Instagram”, “Snapchat”, “Twitter”, “Whatsapp”, “Uber”, “Spotify”) > anos <- c(2004, 2010, 2011, 2006, 2009, 2009, 2008) > usuarios <- c(“39M”, “25M”, “27M”, “8M”, “41M”, “10M”, “10M”) # criando um data frame > data.frame(apps, anos, usuarios) apps anos usuarios 1 Facebook 2004 39M 2 Instagram 2010 25M 3 Snapchat 2011 27M 4 Twitter 2006 8M 5 Whatsapp 2009 41M 6 Uber 2009 10M 7 Spotify 2008 10M
  31. Trabalhando com Estruturas do Data Frame Para ver pequenas partes

    do data frame, temos as funções head() e tail() que retornam as primeiras e as últimas linhas respectivamente. Já a função str() exibe a estrutura do seu conjunto de dados, como o número de observações e variáveis, lista de nomes, tipos de dados, etc. # criando o data frame > apps_bacanas <- data.frame(apps, anos, usuarios) > head(apps_bacanas) apps anos usuarios 1 Facebook 2004 39M 2 Instagram 2010 25M 3 Snapchat 2011 27M 4 Twitter 2006 8M 5 Whatsapp 2009 41M 6 Uber 2009 10M > str(apps_bacanas) 'data.frame': 7 obs. of 3 variables: $ apps : Factor w/ 7 levels "Facebook","Instagram",..: 1 2 3 5 7 6 4 $ anos : num 2004 2010 2011 2006 2009 ... $ usuarios: Factor w/ 6 levels "10M","25M","27M",..: 4 2 3 6 5 1 1
  32. Selecionando Elementos do Data Frame Similar a vetores e matrizes,

    você pode utilizar colchetes para selecionar elementos específicos em um data-frame. # linha 2, coluna 3 > apps_bacanas[2,3] [1] 25M Levels: 10M 25M 27M 39M 41M 8M # terceira linha > apps_bacanas[3,] 3 Snapchat 2011 27M # 3 primeiros valores da coluna anos > apps_bacanas[1:3,2] [1] 2004 2010 2011 # 2 últimos valores da coluna apps > apps_bacanas[6:7, “apps”] [1] Uber Spotify Levels: Facebook Instagram Snapchat Spotify Twitter Uber Whatsapp
  33. [2] Selecionando Elementos do Data Frame Como é possível retornar

    os valores das colunas pelo nome, o R nos dá um atalho para realizar esta tarefa com o coringa $. # coluna anos inteira > apps_bacanas[, “anos”] [1] 2004 2010 2011 2006 2009 2009 2008 # toda a coluna apps > apps_bacanas$apps [1] Facebook Instagram Snapchat Twitter Whatsapp Uber Spotify Levels: Facebook Instagram Snapchat Spotify Twitter Uber Whatsapp
  34. [3] Selecionando Elementos do Data Frame Conseguimos filtrar dados do

    conjunto facilmente utilizando uma coluna de dados lógicos. A função subset() é um atalho para isto. O primeiro argumento especifica o conjunto de dados que você quer um subconjunto. O segundo argumento é a condição para a seleção. # adicionando uma coluna lógica > apps_bacanas$vendido <- c(FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE) > mark_comprou <- apps_bacanas[,“vendido”] # onde vendido for verdadeiro > apps_bacanas[,mark_comprou] apps anos usuarios vendido 2 Instagram 2010 25M TRUE 5 Whatsapp 2009 41M TRUE > subset(apps_bacanas, subset = anos >= 2010) apps anos usuarios vendido 2 Instagram 2010 25M TRUE 3 Snapchat 2011 27M FALSE
  35. Ordenando Em Análise de Dados você pode ordenar de acordo

    com uma certa variável no conjunto de dados. Em R, isto é feito com a função order(). Ela é uma função que nos retorna uma posição ordenada para cada elemento quando é aplicada em uma variável. # ordenando um vetor > anos <- c(2009, 2008, 2013, 2017) > order(anos) [1] 2 1 3 4 > anos[order(anos)] [1] 2008 2009 2013 2017 # reordenando os dados do data frame > novos <- order(apps_bacanas$anos) > apps_bacanas[novos,] apps anos usuarios vendido 1 Facebook 2004 39M FALSE 4 Twitter 2006 8M FALSE 7 Spotify 2008 10M FALSE 5 Whatsapp 2009 41M TRUE 6 Uber 2009 10M FALSE 2 Instagram 2010 25M TRUE 3 Snapchat 2011 27M FALSE
  36. Listas Uma lista em R permite que você colete uma

    grande variedade de objetos sob um nome de forma ordenada, que podem ser vetores, matrizes, data frames ou até mesmo uma outra lista. Ou seja, você pode armazenar qualquer coisa nelas. Criamos uma lista com a função list(). # listas são um super tipo de dados > list(bolacha, got_matriz, apps_bacanas) [[1]] [1] 12 8 20 18 20 [[2]] T01 T02 T03 T04 T05 T06 Mortes 59 130 87 181 246 540 Nudes 21 12 9 10 12 7 [[3]] apps anos usuarios vendido 1 Facebook 2004 39M FALSE 2 Instagram 2010 25M TRUE 3 Snapchat 2011 27M FALSE 4 Twitter 2006 8M FALSE 5 Whatsapp 2009 41M TRUE 6 Uber 2009 10M FALSE 7 Spotify 2008 10M FALSE
  37. Nomeando Listas Podemos nomear os componentes da lista na hora

    da criação da mesma, ou podemos utilizar a função names() para este fim. > super_tipo <- list(bolachas = bolacha, got = got_matriz, aplicativos = apps_bacanas) # == names(super_tipo) <- c(“bolachas”, # “got”, “aplicativos”) $bolachas [1] 12 8 20 18 20 $got T01 T02 T03 T04 T05 T06 Mortes 59 130 87 181 246 540 Nudes 21 12 9 10 12 7 $aplicativos apps anos usuarios vendido 1 Facebook 2004 39M FALSE 2 Instagram 2010 25M TRUE (...)
  38. Selecionando Elementos em Listas Uma maneira de selecionar um componente

    é utilizar a posição do componente. > super_tipo[[1]] [1] 12 8 20 18 20 # == super_tipo[[“got”]] > super_tipo$got T01 T02 T03 T04 T05 T06 Mortes 59 130 87 181 246 540 Nudes 21 12 9 10 12 7 # == super_tipo[[“got”]][2] # == super_tipo[[2]][2] > super_tipo$got[2] [1] 21
  39. Adicionando Informações às listas Para adicionar elementos em uma lista

    nós usamos a função c(), a mesma que usamos para criar um vetor. > palavras_magicas <- c(“Obrigada”, “Por Favor”, “Desculpa”, “Abracadabra”, “Leviosá”) > nova_lista <- c(super_tipo, palavras_magicas)