class: center, middle, inverse, title-slide # Oficina Fundamentos de R ## R-Ladies São Paulo
bit.ly/rladiesSP9
### 25/05/2019 --- class: center, middle ##Organização e realização: <img src="img/rladies.jpeg" width="25%" style="display: block; margin: auto;" /> [R-Ladies São Paulo](https://www.meetup.com/R-Ladies-Sao-Paulo) ##Apoio: <img src="img/logo-spc.png" width="30%" style="display: block; margin: auto;" /> --- class: center, middle # O que é o R-Ladies? R-Ladies é uma organização mundial que promove a diversidade de gênero na comunidade da linguagem R. R-Ladies São Paulo integra, orgulhosamente, a organização R-Ladies Global, em São Paulo. # Como? Através de meetups e mentorias em um ambiente seguro e amigável. Nosso principal objetivo é promover a linguagem computacional estatística R compartilhando conhecimento, assim, quem tiver interesse na linguagem será bem-vinda, independente do nível de conhecimento. Fonte: [About us - R-Ladies](https://rladies.org/about-us/), [Meetup R-Ladies São Paulo](https://www.meetup.com/R-Ladies-Sao-Paulo/) --- class: center, middle # Para quem? Nosso principal público-alvo são as pessoas que se identificam com o gênero feminino, portanto, mulheres cis, mulheres trans, bem como pessoas não-binárias e queer. # Missão Como uma iniciativa de diversidade, a missão das R-Ladies é alcançar uma representação proporcional de pessoas de gêneros atualmente sub-representados na comunidade R, incentivando, inspirando e caacitando-as. Fonte: [About us - R-Ladies](https://rladies.org/about-us/), [Meetup R-Ladies São Paulo](https://www.meetup.com/R-Ladies-Sao-Paulo/) --- class: center, middle ## Como o R-Ladies começou? <img src="img/gabriela.jpeg" width="20%" style="display: block; margin: auto;" /> **[Gabriela de Queiroz](https://github.com/gdequeiroz)** fundou o R-Ladies no dia **1 de outubro de 2012**. Ela queria retribuir à comunidade depois de ir a vários encontros e aprender muito de graça. O primeiro encontro R-Ladies foi realizado em ** San Francisco, Califórnia (Estados Unidos) **. Nos anos seguintes, mais capítulos do R-Ladies começaram em todo o mundo. Fonte: [About us - R-Ladies](https://rladies.org/about-us/history/) --- class:center, middle <img src="img/shiny.png" width="100%" style="display: block; margin: auto;" /> Fonte: [R-Ladies Shiny App](https://gqueiroz.shinyapps.io/rshinylady/) (01/05/2019) --- class: center, middle # Código de conduta O R-Ladies dedica-se a proporcionar uma experiência livre de assédio para todos. Não toleramos nenhuma forma de assédio aos participantes. [Código de conduta - R-Ladies](https://github.com/rladies/starter-kit/wiki/Code-of-Conduct#portuguese) --- class: center, middle # Como saber mais? [Meetup](https://www.meetup.com/pt-BR/R-Ladies-Sao-Paulo) Twitter: [@RLadiesGlobal](https://twitter.com/rladiesglobal) Website: [https://rladies.org/](https://rladies.org/) R-Ladies LATAM Blog (Latin America) - Em breve! [R-Ladies - How do get involved](https://rladies.org/about-us/help/) --- class: center, middle # R-Ladies São Paulo <img src="img/1meetupsp.jpeg" width="70%" style="display: block; margin: auto;" /> **Primero Meetup R-Ladies em São Paulo - Agosto/2018** --- # Cronograma de hoje - O que é um algoritmo? - O que é o R? - Introdução ao RStudio - Boas Práticas Iniciais de Programação - Fundamentos de R - Para aprender mais --- # O que é um algoritmo? Um algoritmo é uma sequência finita de instruções. **Exemplo** * Receita de bolo <img src="img/receita-bolo.jpg" width="90%" style="display: block; margin: auto;" /> --- # O que é um algoritmo? Um algoritmo é uma sequência finita de instruções. **Mais exemplos** * [Construir uma estante de livros](https://pt.wikihow.com/Construir-uma-Estante-de-Livros) <img src="img/estante.jpg" width="70%" style="display: block; margin: auto;" /> --- # O que é um algoritmo? Um algoritmo é uma sequência finita de instruções. **Mais exemplos** * [Fazer um drone caseiro com arduino](https://www.palpitedigital.com/como-fazer-drone-caseiro-arduino/) <img src="img/drone-arduino-e1469058606329-600.webp" width="50%" style="display: block; margin: auto;" /> --- #O que é programar? Programar um computador é escrever instruções em qualquer **linguagem** que o computador entenda. Essa sequência de instruções pode ser executada por um humano ou um computador. Então, **programação é a arte de fazer com que o computador execute uma sequência de instruções definidas.** ```r print('Ola!') ``` ``` ## [1] "Ola!" ``` **[Vamos exercitar um pouco?](link jogo)** --- # O que é o R? > "R é um ambiente de software livre para computação estatística e gráficos". (https://www.r-project.org/) **R** é um ambiente computacional e uma linguagem de programação que vem progressivamente se especializando em manipulação, análise e visualização gráfica de dados. Na atualidade é considerado o melhor ambiente computacional para essa finalidade. O ambiente está disponível para diferentes sistemas operacionais: Unix/Linux, Mac e Windows. * Baseada na linguagem estatística S * 1ª versão de 1995 por Ross Ihaka e Robert Gentleman da Universidade de Auckland <img src="img/Rlogo.png" width="30%" style="display: block; margin: auto;" /> --- # O que é o R? * Berço na Estatística * Muito usado por cientistas de dados, estatísticos e pesquisadores. * Mantida pela [R Development Core Team](https://cran.r-project.org/) * Pode ser usada para diversos fins. --- # Por que usar o R? - É uma linguagem de programação para análise de dados - É open source - É uma linguagem interpretada - Possui uma comunidade ativa de desenvolvedores - É flexível, permitindo desenvolver funções e pacotes para facilitar o trabalho - Está disponível em diferentes plataformas: Windows, Linux e Mac - É reprodutível! - É compartilhável! --- # O que é possível fazer com R? * Análise de dados - Estatística, modelagem, etc. * Visualização de dados * Apresentações * Relatórios dinâmicos * Escrever livros * Mineração de dados * Muito mais ... --- **Exemplo: Gráfico elaborado com R - Proposta Orçamentária PMSP 2019 - 10 maiores orçamentos** <img src="img/PMSP-chunk-5-1.png" width="90%" style="display: block; margin: auto;" /> Fonte: [Explorando o orçamento da Prefeitura Municipal de São Paulo](https://beatrizmilz.github.io/DadosExecucaoOrcamentariaPMSP/proposta2019.html) --- **Exemplo: Gráfico elaborado com R - Execução Orçamentária PMSP na função Gestão Ambiental** <img src="img/PMSP-chunk-5-2.png" width="90%" style="display: block; margin: auto;" /> Fonte: [Explorando o orçamento da Prefeitura Municipal de São Paulo](https://beatrizmilz.github.io/DadosExecucaoOrcamentariaPMSP/gestaoambiental.html) --- **Exemplo: Gráfico elaborado com R - Material Particulado 10 - Dados CETESB - RPollution** <img src="img/PMSP-chunk-6-1.png" width="90%" style="display: block; margin: auto;" /> Fonte: [Rpollution](https://www.rpollution.com/) --- **Exemplo: Frequência de Palavras - TESE Doutorado PROCAM/USP Ana Lucia Spinola** <img src="img/ana-lu-freq.png" width="90%" style="display: block; margin: auto;" /> Fonte: [Ana Lu Spinola](https://analuspi.github.io/Text-Mining/) --- **Exemplo: BIGRAM - TESE Doutorado PROCAM/USP Ana Lucia Spinola** <img src="img/bigram-ana-lu.png" width="90%" style="display: block; margin: auto;" /> Fonte: [Ana Lu Spinola](https://analuspi.github.io/Text-Mining/) --- class: center, middle # Introdução ao RStudio --- # RStudio **RStudio** é o IDE (integrated development environment) da Linguagem R, ou seja, o ambiente que utilizamos para editar e executar os códigos em R. Tem quatro áreas, conforme a figura abaixo: <img src="img/RStudio_screen.png" width="90%" style="display: block; margin: auto;" /> Fonte: [Curso Introdução ao R - Fatec](https://github.com/MaryMS/2018-11-R-Course-FatecZS) --- # RStudio <img src="img/01-rstudio.png" width="100%" style="display: block; margin: auto;" /> Fonte: [SW Carpentry](http://swcarpentry.github.io/r-novice-gapminder/01-rstudio-intro/index.html) --- # RStudio <img src="img/01-rstudio-script.png" width="100%" style="display: block; margin: auto;" /> Fonte: [SW Carpentry](http://swcarpentry.github.io/r-novice-gapminder/01-rstudio-intro/index.html) --- # RStudio <img src="img/haydee1.jpg" width="100%" style="display: block; margin: auto;" /> Fonte: [Haydee Svab](https://www.slideshare.net/mobile/haydeesvab/anlise-crtica-de-dados-primeiros-passos-com-r) --- # RStudio <img src="img/haydee2.jpg" width="100%" style="display: block; margin: auto;" /> Fonte: [Haydee Svab](https://www.slideshare.net/mobile/haydeesvab/anlise-crtica-de-dados-primeiros-passos-com-r) --- # RStudio <img src="img/haydee3.jpg" width="100%" style="display: block; margin: auto;" /> Fonte: [Haydee Svab](https://www.slideshare.net/mobile/haydeesvab/anlise-crtica-de-dados-primeiros-passos-com-r) --- # RStudio <img src="img/haydee4.jpg" width="100%" style="display: block; margin: auto;" /> Fonte: [Haydee Svab](https://www.slideshare.net/mobile/haydeesvab/anlise-crtica-de-dados-primeiros-passos-com-r) --- # RStudio <img src="img/haydee5.jpg" width="100%" style="display: block; margin: auto;" /> Fonte: [Haydee Svab](https://www.slideshare.net/mobile/haydeesvab/anlise-crtica-de-dados-primeiros-passos-com-r) --- # RStudio <img src="img/haydee6.jpg" width="100%" style="display: block; margin: auto;" /> Fonte: [Haydee Svab](https://www.slideshare.net/mobile/haydeesvab/anlise-crtica-de-dados-primeiros-passos-com-r) --- # RStudio <img src="img/haydee7.jpg" width="100%" style="display: block; margin: auto;" /> Fonte: [Haydee Svab](https://www.slideshare.net/mobile/haydeesvab/anlise-crtica-de-dados-primeiros-passos-com-r) --- # RStudio <img src="img/haydee8.jpg" width="100%" style="display: block; margin: auto;" /> Fonte: [Haydee Svab](https://www.slideshare.net/mobile/haydeesvab/anlise-crtica-de-dados-primeiros-passos-com-r) --- # Help! - Pedir ajuda: **help**(nome_da_funcao) ou **?**nome_da_funcao. ```r help(sum) ?sum ``` - Se a dúvida permanecer, procure no [Stack OverFlow](https://stackoverflow.com/) ou Google. - E se ainda tiver dúvidas, pergunte para a comunidade (há grupos no Telegram e outras redes sociais). --- class: center, middle # Boas práticas iniciais para organizar seu projeto --- > **Tratar dados como somente leitura:** esse é provavelmente o objetivo mais importante da configuração de um projeto. Os dados geralmente consomem tempo e/ou são caros para coletar. Trabalhar com eles interativamente (por exemplo, no Excel), onde eles podem ser modificados, significa que você nunca tem certeza de onde os dados vieram, ou como eles foram modificados desde a coleta. Portanto, é uma boa ideia tratar seus dados como “somente leitura”. > **Qualquer coisa gerada pelos seus scripts deve ser tratada como descartável:** todos devem poder ser criados novamente a partir dos seus scripts. Existem várias maneiras diferentes de gerenciar essa saída. Acho útil ter uma pasta de saída com subdiretórios diferentes para cada análise separada. Isso fica mais fácil depois, já que muitas das análises são exploratórias e não acabam sendo usadas no projeto final, e algumas análises são compartilhadas entre os projetos. Fonte: [SW Carpentry](http://swcarpentry.github.io/r-novice-gapminder/02-project-intro/index.html) --- > **Os nomes das suas variáveis devem fazer sentido:** Ao nomear suas variáveis, dê nomes que tenham significado para seres humanos. Pense que o código que você escreve hoje deve ser claro para você daqui 1 ano e também deve ser claro para algum(a) colega seu(ua). > **Comente bem o seu código:** É possível fazer comentários usando o símbolo '#'. É sempre bom explicar o que uma variável armazena, o que uma função faz, porque alguns parâmetros são passados para uma determinada função, qual é o objetivo de um trecho de código, etc. > **Evite linhas de código muito longas:** Usar linhas de código mais curtas ajuda na leitura do código. > **Escreva um código organizado:** Por exemplo, adote um padrão no uso de minúsculas e maiúsculas, uma lógica única na organização de pastas e arquivos, pode ser adotada uma breve descrição (como comentário) indicando o que um determinado script faz. > **Carregue todos os pacotes que irá usar sempre no início do arquivo:** Quando alguém abrir o seu código será fácil identificar quais são os pacotes que devem ser instalados e quais dependências podem existir. > **Evite referência de caminho que considere seu computador ou usuário:** Faça referência ao caminho do projeto. --- # Antes de começar: o projeto > Ao realizar um projeto, sempre organizar os arquivos em uma **pasta** que conterá todos os arquivos de seu projeto. > Nomear novos arquivos com **nomes descritivos** <img src="img/organização_arquivos.png" width="100%" style="display: block; margin: auto;" /> --- # Projetos > "Um bom layout de projeto facilitará sua vida: ajudará a garantir a integridade de seus dados; facilita o compartilhamento de seu código com outra pessoa (colega de laboratório, colaborador ou /orientador); ele permite que você facilmente faça o upload do seu código com a submissão do seu manuscrito; torna-se mais fácil recuperar o projeto depois de um intervalo. " Fonte: [SW Carpentry](http://swcarpentry.github.io/r-novice-gapminder/02-project-intro/index.html) --- # Criando um projeto 1. Clique na opção **“File”** do menu, e então em **“New Project”**. 1. Clique em **“New Directory”**. 1. Clique em **“New Project”**. 1. Escreva o nome do diretório (pasta) onde deseja manter seu projeto, ex “my_project”. 1. Clique no botão **“Create Project”**. OBS: Crie um novo script para escrever seus códigos! **File -> New File -> RScript ** --- # Atalhos importantes Os atalhos facilitam. Veja os principais:<br></br> - CTRL + ENTER: roda a linha selecionada no script.<br></br> - ALT + **-**: (<-) sinal de atribuição.<br></br> --- # E lá vamos nós! <center><img src="img/S5e27_T.V._typing.gif"></center> --- class: center, middle # R Básico --- # Instruções - Abrir o RStudio da sua máquina <br></br> - Abrir um novo R script (file -> new file -> R script) --- # R como calculadora - O R permite realizar muitas operações aritméticas em seu console! ```r 2 + 5 # adição ``` ``` ## [1] 7 ``` ```r 9 - 4 # subtração ``` ``` ## [1] 5 ``` ```r 5 * 2 # multiplicação ``` ``` ## [1] 10 ``` ```r 7 / 5 # divisão ``` ``` ## [1] 1.4 ``` --- # R como calculadora ```r 9 %% 4 # resto da divisão de 9 por 4 ``` ``` ## [1] 1 ``` ```r 7 %/% 4 # parte inteira da divisão de 7 por 4 ``` ``` ## [1] 1 ``` ```r 8 ^ 2 # potenciação ``` ``` ## [1] 64 ``` ```r sqrt(1024) # radiciação ``` ``` ## [1] 32 ``` A ordem matemática das operações também vale no R. --- # Funções matemáticas ```r sin(1) # funções trigonométricas ``` ``` ## [1] 0.841471 ``` ```r log(1) # logaritmo natural (base e) ``` ``` ## [1] 0 ``` ```r log10(10) # logaritmo na base 10 ``` ``` ## [1] 1 ``` ```r exp(0.5) # e^(1/2) ``` ``` ## [1] 1.648721 ``` Fonte: [SW Carpentry](http://swcarpentry.github.io/r-novice-gapminder/01-rstudio-intro/index.html) --- # Desafio 1 Daenerys quer conquistar uma aldeia com os seus três dragões. Cada dragão mata 32 ovelhas e 90 pessoas a cada 1 hora. Considerando que ela atacará a aldeia por 4h, quantas ovelhas e pessoas ao todo os dragões irão assassinar após o ataque? --- # Desafio 1 - Resposta Daenerys quer conquistar uma aldeia com os seus três dragões. Cada dragão mata 32 ovelhas e 90 pessoas a cada 1 hora. Considerando que ela atacará a aldeia por 4h, quantas ovelhas e pessoas ao todo os dragões irão assassinar após o ataque? ```r 3*32*4 + 3*90*4 ``` ``` ## [1] 1464 ``` --- # O que é uma variável? - Ao se desenvolver um projeto, você irá trabalhar com diversos tipos de arquivos, além de informações que serão repetidas ao longo do script. - Para reutilizar essas informações ao longo do script utilizamos o que chamamos de **variável** - Uma variável é um espaço de memória que retém e representa um valor ou expressão <img src="img/ran.jpg" width="40%" style="display: block; margin: auto;" /> --- # Atribuindo valor a uma variável no R - Para atribuir um valor a uma variável no R, utilizamos o operador **<-** <br></br> - O atalho ALT + **-** gera o operador **<-** <br></br> - Todas as declarações R onde são criadas variáveis atribuindo valores a elas, tem a mesma forma: <center><b>nome_da_variável <- valor<b></center> --- # Exemplos de variáveis e atribuição de valores ```r nome_empregado <- "Tom Cruise de Souza e Silva" nome_empregado ``` ``` ## [1] "Tom Cruise de Souza e Silva" ``` ```r horas_trabalhadas <- 160 horas_trabalhadas ``` ``` ## [1] 160 ``` ```r salario <- 3984.23 salario ``` ``` ## [1] 3984.23 ``` ```r ativo <- TRUE ativo ``` ``` ## [1] TRUE ``` --- # Nomes de variáveis - Os nomes devem começar com uma letra. Podem conter letras, números, _ e .<br></br> - Recomendação do autor do livro R For Data Science: **usar_snake_case**, ou seja, palavras escritas em minúsculo separadas pelo underscore (_).<br></br> - O R é *case sensitive*, isto é, faz a diferenciação entre as letras minúsculas e maiúsculas. Portanto, uma variável chamado *teste* é diferente de uma outra variável chamada *Teste*. --- # Desafio 2 1) Crie variáveis para os casos abaixo: - DC com valor Tem muitos heróis - Conta a pagar com valor 40,50 - Dinheiro na carteira com valor 60 2) Usando as variáveis criadas anteriormente, qual o valor do troco que irei receber do pagamento de uma conta de 40,50 reais com meus R$ 60,00 reais? --- # Desafio 2 - Resposta 1) Crie variáveis para os casos abaixo: ```r dc <- "Tem muitos herois" dc ``` ``` ## [1] "Tem muitos herois" ``` ```r conta <- 40.50 conta ``` ``` ## [1] 40.5 ``` ```r dinheiro <- 60 dinheiro ``` ``` ## [1] 60 ``` --- # Desafio 2 - Resposta 2) Usando as variáveis criadas anteriormente, qual o valor do troco que irei receber do pagamento de uma conta de 40,50 reais com meus R$ 60,00 reais? ```r dinheiro - conta ``` ``` ## [1] 19.5 ``` --- # Classes Básicas ou Atômicas do R São os tipos básicos de dados que podem ser representados na linguagem R. É neles que guardamos as informações que necessitamos para um algoritmo. - **Integer**: números inteiros <br></br> - **Numeric**: números racionais <br></br> - **Complex**: números complexos (raramente usados para Análise de Dados) <br></br> - **Logical**: TRUE, FALSE ou NA <br></br> - **Factor**: variavéis categóricas <br></br> - **Character**: texto <br></br> --- # Exemplos: integer ```r 10L # Um número inteiro pode ser representado acompanhado de um L ``` ``` ## [1] 10 ``` ```r 2019L ``` ``` ## [1] 2019 ``` --- # Exemplos: numeric ```r 10 ``` ``` ## [1] 10 ``` ```r 2019 ``` ``` ## [1] 2019 ``` ```r 5.44 ``` ``` ## [1] 5.44 ``` --- # Exemplos: complex ```r 4 + 9i ``` ``` ## [1] 4+9i ``` --- # Exemplos: logical ```r TRUE ``` ``` ## [1] TRUE ``` ```r FALSE ``` ``` ## [1] FALSE ``` --- # Exemplos: factor ```r escolaridade <- c("Médio", "Superior", "Fundamental", "Fundamental", "Médio") fator <- as.factor(escolaridade) fator ``` ``` ## [1] Médio Superior Fundamental Fundamental Médio ## Levels: Fundamental Médio Superior ``` A função as.factor() criou uma variável do tipo factor. Na linha *Levels* aparecem os rótulos do fator. Essa classe de dados pode ser trabalhada com o pacote **forcats**. --- # Exemplos: character ```r "escola" ``` ``` ## [1] "escola" ``` ```r "2019" ``` ``` ## [1] "2019" ``` ```r "I love pinschers." ``` ``` ## [1] "I love pinschers." ``` --- # Operações simples com strings ```r animal <- "Camaleao" #letras maiúsculas toupper(animal) ``` ``` ## [1] "CAMALEAO" ``` ```r #letras minúsculas tolower(animal) ``` ``` ## [1] "camaleao" ``` ```r #número de caracteres nchar(animal) ``` ``` ## [1] 8 ``` --- # Função class A função **class** mostra a classe de uma variável. ```r nome_filme <- "Bohemian Rhapsody" class(nome_filme) ``` ``` ## [1] "character" ``` ```r ano_inteiro <- 2018L class(ano_inteiro) ``` ``` ## [1] "integer" ``` ```r ano <- 2018 class(ano) ``` ``` ## [1] "numeric" ``` --- # Função class ```r motor <- 1.5 class(motor) ``` ``` ## [1] "numeric" ``` ```r passou_enem <- TRUE class(passou_enem) ``` ``` ## [1] "logical" ``` --- # Conversão de classes Podemos forçar uma variável a ser de uma classe específica com as funções: - as.character() <br></br> - as.numeric() <br></br> - as.integer() <br></br> - as.logical() <br></br> --- # Conversão de classes ** Exemplos de conversão de classes ** ```r vetor <- 0:9 vetor ``` ``` ## [1] 0 1 2 3 4 5 6 7 8 9 ``` ```r class(vetor) ``` ``` ## [1] "integer" ``` ```r vetor_numeric <- as.numeric(vetor) vetor_numeric ``` ``` ## [1] 0 1 2 3 4 5 6 7 8 9 ``` ```r class(vetor_numeric) ``` ``` ## [1] "numeric" ``` --- # Conversão de classes ** Exemplos de conversão de classes ** ```r vetor_logical <- as.logical(vetor) vetor_logical ``` ``` ## [1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE ``` ```r class(vetor_logical) ``` ``` ## [1] "logical" ``` --- # Desafio 3 Converta a variável Conta criada anteriormente para character. Agora cheque sua classe. O que acontece com seu valor? Como explica o que aconteceu? --- # Desafio 3 - Resposta Converta a variável Conta criada anteriormente para character. Agora cheque sua classe. O que acontece com seu valor? ```r as.character(conta) ``` ``` ## [1] "40.5" ``` --- # Tipos de variáveis Os tipos das variáveis são definidos a partir dos valores armazenados nela: - **Vector**: armazena elementos de mesma classe. <br></br> - **Matrix**: vetores de duas dimensões que armazenam elementos de mesma classe. <br></br> - **List**: tipo especial de vetor que aceita elementos de classes diferentes. <br></br> - **Data.frame**: são tabelas de dados com linhas e colunas, como uma tabela do Excel. Como são listas, essas colunas podem ser de classes diferentes. --- # Exemplo: Vector A função c() cria um vetor. ```r semestre1 <- c("janeiro", "fevereiro", "março", "abril", "maio") notas_alunos <- c(5, 6.5, 10, 0.5, 2.75) ``` É possível realizar operações com vetores. ```r vetor1 <- 1:5 vetor1 / 5 # variável vetor1 dividido por 5 ``` ``` ## [1] 0.2 0.4 0.6 0.8 1.0 ``` ```r vetor2 <- 6:10 vetor1 * vetor2 ``` ``` ## [1] 6 14 24 36 50 ``` --- # Exemplo: Matrix A função matrix() cria uma matriz. ```r primeira_matriz <- matrix(1:8, nrow = 2, ncol = 4) primeira_matriz ``` ``` ## [,1] [,2] [,3] [,4] ## [1,] 1 3 5 7 ## [2,] 2 4 6 8 ``` A funçăo dim() retorna a dimensăo do variável (linha e coluna). ```r dim(primeira_matriz) ``` ``` ## [1] 2 4 ``` --- # Exemplo: List A função list() cria uma lista. ```r wizards <- list("Harry Potter", 18, TRUE, c("Hermione Granger", "Rony Weasley")) class(wizards) ``` ``` ## [1] "list" ``` A função is.list() verifica se o variável é ou não uma lista. ```r harry_friends <- c("Hermione Granger", "Rony Weasley") class(harry_friends) ``` ``` ## [1] "character" ``` ```r is.list(harry_friends) ``` ``` ## [1] FALSE ``` --- # Exemplo: Data.frame A função head() mostra as primeiras 6 linhas do dataframe. ```r data(iris) df <- iris head(df) ``` ``` ## Sepal.Length Sepal.Width Petal.Length Petal.Width Species ## 1 5.1 3.5 1.4 0.2 setosa ## 2 4.9 3.0 1.4 0.2 setosa ## 3 4.7 3.2 1.3 0.2 setosa ## 4 4.6 3.1 1.5 0.2 setosa ## 5 5.0 3.6 1.4 0.2 setosa ## 6 5.4 3.9 1.7 0.4 setosa ``` --- # Funções úteis para trabalhar com dataframes - tail(): mostra as últimas 6 linhas. - names(): mostra os nomes das colunas. - View(): mostra o dataframe. --- # Desafio 4 Quantas observações tem o data.frame iris?<br></br> Quais são as variáveis do data.frame iris? --- # Desafio 4 - Resposta Quantas observações tem o data.frame iris?<br></br> ```r tail(df) ``` ``` ## Sepal.Length Sepal.Width Petal.Length Petal.Width Species ## 145 6.7 3.3 5.7 2.5 virginica ## 146 6.7 3.0 5.2 2.3 virginica ## 147 6.3 2.5 5.0 1.9 virginica ## 148 6.5 3.0 5.2 2.0 virginica ## 149 6.2 3.4 5.4 2.3 virginica ## 150 5.9 3.0 5.1 1.8 virginica ``` Quais são as variáveis do data.frame iris? ```r names(df) ``` ``` ## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" ## [5] "Species" ``` --- ## Operadores Relacionais - Igual a: **==** Exemplos: ```r TRUE == TRUE ``` ``` ## [1] TRUE ``` ```r TRUE == FALSE ``` ``` ## [1] FALSE ``` - Diferente de: **!=** Exemplos: ```r TRUE != TRUE ``` ``` ## [1] FALSE ``` ```r TRUE != FALSE ``` ``` ## [1] TRUE ``` --- ## Operadores Relacionais - Maior que: **>** <br></br> - Maior ou igual: **>=** <br></br> - Menor que: **<** <br></br> - Menor ou igual: **<=** <br></br> Exemplos: ```r 3 < 5 ``` ``` ## [1] TRUE ``` ```r 10 >= 10 ``` ``` ## [1] TRUE ``` ```r 10 > 10 ``` ``` ## [1] FALSE ``` --- ## Operadores Lógicos - E: **&** <br></br> Será verdadeiro se os dois forem TRUE ```r x <- 5 x >= 3 & x <=7 ``` ``` ## [1] TRUE ``` ```r y <- 2 y >= 3 & y <= 7 ``` ``` ## [1] FALSE ``` --- ## Operadores Lógicos - OU: **|**<br></br> Será verdadeiro se um dos dois forem TRUE<br></br> ```r y <- 2 y >= 3 | y <=7 ``` ``` ## [1] TRUE ``` ```r y <- 1 y >= 3 | y == 0 ``` ``` ## [1] FALSE ``` --- ## Operadores Lógicos - Negação: **!** <br></br> ```r (!x < 4) ``` ``` ## [1] TRUE ``` --- # NA Uma característica importante do R que pode dificultar a comparação são os valores ausentes ou **NAs** (não disponíveis). **NA** representa um valor desconhecido. --- # NA Quase qualquer operação envolvendo um valor desconhecido também será desconhecido: ```r NA > 10 ``` ``` ## [1] NA ``` ```r 10 == NA ``` ``` ## [1] NA ``` ```r NA + 10 ``` ``` ## [1] NA ``` ```r NA / 2 ``` ``` ## [1] NA ``` --- # NA E o mais confuso: ```r NA == NA ``` ``` ## [1] NA ``` <br></br> **is.na()** é a função que testa se uma variável é NA. --- # Índices **Início:** o início da contagem é 1<br></br> *Vetores*: característica linear ```r v <- c(10:25) v[2] ``` ``` ## [1] 11 ``` *Data Frames*: o primeiro número indica a linha (observação) e o segundo a coluna (variável) ```r df[145, 2] ``` ``` ## [1] 3.3 ``` --- # Desafio 5 1) No data.frame iris, testar se o Petal.Lenght da 5ª observação é igual ao da 6ª observação. E se o Petal.Lenght da 5ª observação é igual ao da 7ª observação.<br></br> 2) A 10ª observação tem Petal.Width maior ou menor que a seguinte (11ª)? E qual é a espécie da menor? --- # Desafio 5 - Resposta 1) No data.frame iris, testar se o Petal.Lenght da 5ª observação é igual ao da 6ª observação. E se o Petal.Lenght da 5ª observação é igual ao da 7ª observação. ```r df[5,3]==df[6,3] ``` ``` ## [1] FALSE ``` ```r df[5,3]==df[7,3] ``` ``` ## [1] TRUE ``` 2) A 10ª observação tem Petal.Width maior ou menor que a seguinte (11a)? E qual é a espécie da menor? ```r df[10,4] < df[11,4] # Petal.Width da 10ª linha é menor que da 11ª ``` ``` ## [1] TRUE ``` ```r df[10,5] ``` ``` ## [1] setosa ## Levels: setosa versicolor virginica ``` --- # Pacotes no R **Pacotes** são coleções de funções, dados e documentação que estendem as capacidades do R básico. Eles precisam ser instalados e carregados. <center><img src="img/icon-packages.jpg" style="width: 45%"></center> --- ## Instalação de Pacotes: - Via CRAN: install.packages("nome-do-pacote"). ```r install.packages("tidyverse") ``` - Via Github: devtools::install_github("nome-do-repo/nome-do-pacote"). ```r devtools::install_github("tidyverse/dplyr") ``` ## Carregar pacotes: - library(nome-do-pacote) ```r #library(tidyverse) ``` --- # Dicas sobre Pacotes 1. Você só precisa instalar o pacote uma vez, mas precisa carregá-lo sempre que começar uma nova sessão; 2. Para instalar o pacote use as aspas; 3. Para carregar o pacote, **não** utilize as aspas. --- # Pacotes - CRAN Task View Relação de pacotes encontrados no CRAN por áreas de interesse. - [CRAN Task View](https://cran.r-project.org/web/views/) <img src="img/cran_task_view.png" width="100%" style="display: block; margin: auto;" /> --- # Para aprender mais - [Repositório RLadies São Paulo](https://github.com/rladies/meetup-presentations_sao-paulo) <br></br> - [Livro R for Data Science](https://r4ds.had.co.nz) <br></br> - [Software Carpentry](https://software-carpentry.org/lessons/) <br></br> - [Material do Curso-R](https://www.curso-r.com/material/) <br></br> - [R-Bloggers](https://www.r-bloggers.com) <br></br> --- # Referências - https://r4ds.had.co.nz - https://www.curso-r.com/material/ - https://www.tidyverse.org - https://software-carpentry.org/lessons/ - http://brunaw.com/slides/rladies-sp/13-08-2018/meetup.html#1 - https://github.com/MaryMS/2018-11-R-Course-FatecZS - https://beatrizmilz.github.io/talk/oficina_intro_r_ufabc_2018/ - https://bookdown.org/wevsena/curso_r_tce/curso_r_tce.html - https://rstudio-pubs-static.s3.amazonaws.com/279878_c7634fb5fe9e40b7abc7c35aa724a2a0.html - https://analisereal.com/tag/introducao-a-analise-de-dados-com-o-r-2/ - http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html --- class: middle <center><img src="img/if_you_want_to_go_fast_go_alone.jpg" style="width: 50%"></center> --- class: center, middle Esta apresentação foi feita em [xaringan](https://github.com/yihui/xaringan), um pacote do R! :) # Muito obrigada! ## R-Ladies São Paulo Haydée Svab [hsvab@hsvab.eng.br] <br></br> Mariana Dias Guilardi [diasgmariana@gmail.com] <br></br> Patricia Guisordi [patriciacucio@gmail.com] <br></br> Acesse nosso [GitHub](https://github.com/rladies/meetup-presentations_sao-paulo) para acessar outros conteúdos!