class: center, middle, hide-logo <!-- inicio font awesome --> <script src="https://kit.fontawesome.com/1f72d6921a.js" crossorigin="anonymous"></script> <!-- final font awesome --> <!-- inicio github buttons --> <script async defer src="https://buttons.github.io/buttons.js"></script> <!-- final github buttons --> .pull-left[ # Introdução a Linguagem R **[Beatriz Milz](https://beatrizmilz.com)** <a href='mailto:beatriz.milz@usp.br'><i class="far fa-envelope"></i></a> <a href='https://twitter.com/BeaMilz'><i class="fab fa-twitter"></i> <a href='https://github.com/beatrizmilz'><i class="fab fa-github"></i></a> __.can-edit[Meetup R-Ladies Curitiba]__ __.can-edit[2º semestre/2020]__ ] .pull-right[ <img src="img/Horst/community1.jpg" width="400px" style="display: block; margin: auto;" /> <right>Ilustração por <a href='https://twitter.com/allison_horst/'> Allison Horst</a></right> ] .minirodape[Atualizado em 16 de August de 2021. <br> Para ativar o modo tela cheia, pressione `ALT + F`, e depois `F`] --- # Beatriz Milz ## Contexto Acadêmico - Doutoranda no Programa de Pós-Graduação em Ciência Ambiental (PROCAM) - Instituto de Energia e Ambiente - Universidade de São Paulo - Equipe da Secretaria Executiva Editorial - [Revista Ambiente & Sociedade](http://scielo.br/asoc) - Anteriormente: - Mestre em Ciências - UNIFESP; - Bacharel em Gestão Ambiental - EACH/USP --- ## Comunidades de R <center> <img src="img/Hex/1dados-hex.png" width="18%" /><img src="img/Hex/1hexlogorladies.jpeg" width="18%" /><img src="img/Hex/2satrdaysp.png" width="18%" /><img src="img/Hex/4LatinR_hex_violeta-cut.jpg" width="18%" /><img src="img/Hex/carpentries.png" width="18%" /> </center> - Co-autora do pacote [`{dados}`](https://cienciadedatos.github.io/dados/) - Co-organizadora: [R-Ladies São Paulo](https://www.meetup.com/pt-BR/R-Ladies-Sao-Paulo) 💜 - Comitê organizador: - [satRday São Paulo](https://saopaulo2019.satrdays.org/) - [LatinR](https://latin-r.com/pt) - [useR! 2021](https://user2021.r-project.org/) - Instrutora [The Carpentries](https://carpentries.org/) <!-- --- --> <!-- class: middle --> <!-- <center> --> <!-- <iframe src="https://app.sli.do/event/izgrkbp8" height="100%" width="100%" style="min-height: 600px;"></iframe> --> <!-- </center> --> --- ## Sobre este material - Público-alvo: pessoas com interesse em começar a utilizar o R para análise de dados. - Parte deste conteúdo é derivado [deste material](https://beatrizmilz.github.io/2020-R-Ladies-SP-Basico/#1) da R-Ladies São Paulo. <img src="img/Horst/data-analysis.jpg" width="600px" style="display: block; margin: auto;" /> Ilustração por <a href='https://twitter.com/allison_horst/'> Allison Horst</a> --- class: middle - Conteúdo: principais conceitos necessários antes de começar a aprender o tidyverse - Dados tabulares: | preco| quilate|corte |cor |transparencia | profundidade| tabela| x| y| z| |-----:|-------:|:---------|:---|:-------------|------------:|------:|----:|----:|----:| | 326| 0.23|Ideal |E |SI2 | 61.5| 55| 3.95| 3.98| 2.43| | 326| 0.21|Premium |E |SI1 | 59.8| 61| 3.89| 3.84| 2.31| | 327| 0.23|Bom |E |VS1 | 56.9| 65| 4.05| 4.07| 2.31| | 334| 0.29|Premium |I |VS2 | 62.4| 58| 4.20| 4.23| 2.63| | 335| 0.31|Bom |J |SI2 | 63.3| 58| 4.34| 4.35| 2.75| | 336| 0.24|Muito Bom |J |VVS2 | 62.8| 57| 3.94| 3.96| 2.48| Base de dados `diamante` disponível no pacote [`dados`](https://cienciadedatos.github.io/dados/). --- ## Pré-requisitos ### Nesta atividade: - [RStudio Cloud](https://rstudio.cloud/project/1540878) ### Para usar no dia-a-dia: - `R` e `RStudio` instalados no seu computador: <img src="img/rstudio-r.jpg" width="40%" style="display: block; margin: auto;" /> - Links para instalação: - [R](https://cran.r-project.org/bin/windows/base/) - [RStudio](https://rstudio.com/products/rstudio/download/) --- class: middle, center, inverse # R e RStudio .center[(Acompanhe no `[RStudio Cloud](https://rstudio.cloud/project/1540878)` 👩💻)]
02
:
00
--- ## O que é o R? > "R é um ambiente de software livre para computação estatística e gráficos". (https://www.r-project.org/) -- - **Por que usar o R**? - É uma linguagem de programação que possui muitas ferramentas para análise de dados - É _código aberto_ (open source) - Possui uma comunidade ativa de pessoas desenvolvedoras - É flexível, permite desenvolver funções e pacotes para facilitar o trabalho - Está disponível, gratuitamente, em diferentes plataformas: Windows, Linux e Mac - Mantido pela [R Development Core Team](https://cran.r-project.org/) --- ## RStudio **RStudio** é uma IDE (_integrated development environment_) da Linguagem R, ou seja, um ambiente de desenvolvimento que utilizamos para editar e executar os códigos em R. <img src="img/01-rstudio.png" width="700px" style="display: block; margin: auto;" /> --- ## RStudio <img src="img/haydee1.jpg" width="700px" 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="700px" 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="700px" 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="700px" 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="700px" 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="700px" 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="700px" 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="700px" 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: middle, center, inverse # Começando! .center[(Acompanhe no arquivo `1-introducao.R` 👩💻)]
00
:
30
--- ## Começando - Abrir o `RStudio Cloud`. - Você pode criar um novo `R` script em: `file -> new file -> R script` - Utilizaremos o arquivo que está na cloud: `1-introducao.R`. Abra-o na aba `Files`. <img src="img/01-rstudio-script.png" width="700px" style="display: block; margin: auto;" /> --- ## `R` como calculadora - O `R` permite realizar muitas operações matemáticas! ```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 ``` - `CTRL + ENTER`: executa a linha selecionada no script. --- - **`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) --- ## O que é um objeto? - 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 **objeto** - Um objeto retém e representa um valor, função ou base de dados --- ## Atribuindo valor a um objeto no R - Para atribuir um valor a um objeto no R, utilizamos o operador: .center[**`<-`**] .center[`nome_do_objeto <- valor`] - Atalho: `ALT` + `-`: cria o `<-` sinal de atribuição. Exemplo: ```r minha_idade <- 27 minha_idade ``` ``` ## [1] 27 ``` --- ## Exemplo: ```r nome <- "Daenerys Targaryen" nome ``` ``` ## [1] "Daenerys Targaryen" ``` ```r horas_trabalhadas <- 160 horas_trabalhadas ``` ``` ## [1] 160 ``` ```r salario <- 3984.23 salario ``` ``` ## [1] 3984.23 ``` ```r ativo <- TRUE ativo ``` ``` ## [1] TRUE ``` --- ## Nomes de objetos - Os nomes devem começar com uma letra. Podem conter letras, números, _ e . - Não usar acentuação e espaços nos nomes de objetos. - Recomendação do autor do livro `R` For Data Science: **usar_snake_case**, ou seja, palavras escritas em minúsculo separadas pelo underscore (`_`). - O `R` é *case sensitive*, isto é, faz a diferenciação entre as letras minúsculas e maiúsculas. Portanto, um objeto chamado `teste` é diferente de uma outro objeto chamada `Teste`. --- ## Funções - Funções permitem __automatizar tarefas__ comuns de forma mais poderosa do que copiar e colar. - O R possui muitas funções já implementadas. - Pacotes são coleções de funções, dados e documentação que ampliam as capacidades do R básico. Veremos como instalá-los no final desta atividade! - Você pode desenvolver suas próprias funções! 👩💻 --- ### Exemplo de funções básicas do R ```r # Combinar elementos - Função c() ano_nascimento_irmaos <- c(1993, 1998, 2001, 2012, 2012) ``` -- ```r # Podemos fazer operações com o resultado idade_irmaos <- 2020 - ano_nascimento_irmaos idade_irmaos ``` ``` ## [1] 27 22 19 8 8 ``` -- ```r # Calculando a média - Função mean() media_idade_irmaos <- mean(idade_irmaos) media_idade_irmaos ``` ``` ## [1] 16.8 ``` --- ### Estrutura de uma função - __Nome__ - é como ela fica salva no ambiente, esse nome é importante para usarmos a função. - __Argumentos__ - são parâmetros usados internamente pela função. Muitas funções possuem argumentos com valores padrão. - **Corpo** - o código que será executado. O resultado dependerá dos argumentos oferecidos. ```r # para criar uma funcao nome_da_funcao <- function(argumentos){ corpo da função } # para usar essa função nome_da_funcao(argumentos = ...) ``` --- ### Exemplo sobre argumentos ```r # Arredondar valores - função round() # help(round) # round(x, digits = 0) round(media_idade_irmaos) ``` ``` ## [1] 17 ``` ```r round(media_idade_irmaos, digits = 1) ``` ``` ## [1] 16.8 ``` --- ## Funções importantes do R base | Função | O que retorna? | |--:|--:| | `sum()` | Soma | | `mean()` | Média | | `median()` | Mediana | | `var()` | Variância (simples) | | `sd()` | Desvio Padrão | | `max()` | Valor máximo | | `min()` | Valor mínimo | | `round()` | Valor arredondado | --- class: middle, center, inverse # Operadores Relacionais e Lógicos .center[(Acompanhe no arquivo `2-operadores.R` 👩💻)] --- ## Operadores Relacionais - Igual a: **==** - Diferente de: **!=** - Maior que: **>** - Maior ou igual: **>=** - Menor que: **<** - Menor ou igual: **<=** --- ## Operadores Relacionais Igual a: **==** ```r TRUE == TRUE ``` ``` ## [1] TRUE ``` ```r TRUE == FALSE ``` ``` ## [1] FALSE ``` --- ## Operadores Relacionais Diferente de **!=** ```r TRUE != TRUE ``` ``` ## [1] FALSE ``` ```r TRUE != FALSE ``` ``` ## [1] TRUE ``` --- ## Operadores Relacionais Menor que: **<** ```r 3 < 5 ``` ``` ## [1] TRUE ``` Maior ou igual a: **>=** ```r 10 >= 10 ``` ``` ## [1] TRUE ``` Maior que: **>=** ```r 10 > 10 ``` ``` ## [1] FALSE ``` --- ## Operadores Lógicos - AND - E: **&** Será verdadeiro se os dois forem verdadeiros (`TRUE`) ```r x <- 5 x >= 3 & x <=7 ``` ``` ## [1] TRUE ``` ```r y <- 2 y >= 3 & y <= 7 ``` ``` ## [1] FALSE ``` --- ## Operadores Lógicos - OR - OU: **|** Será verdadeiro se um dos dois forem verdadeiros (`TRUE`) ```r y <- 2 y >= 3 | y <=7 ``` ``` ## [1] TRUE ``` ```r y <- 1 y >= 3 | y == 0 ``` ``` ## [1] FALSE ``` --- ## Operadores Lógicos - NOT - Negação: **!** ```r !TRUE ``` ``` ## [1] FALSE ``` ```r !FALSE ``` ``` ## [1] TRUE ``` ```r x <- 5 (!x < 4) ``` ``` ## [1] TRUE ``` --- class: middle, center, inverse # Tipos básicos de dados .center[(Acompanhe no arquivo `3-tipos_dados.R` 👩💻)] --- ## Tipos básicos de dados 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 - **Double/Numeric**: números racionais - **Logical**: tipos lógicos, `TRUE` ou `FALSE` - **Character**: texto (sempre entre aspas) - **Factor**: dados categóricos - A função `class()` retorna o tipo do dado. --- ## Números - Um número inteiro seguido de `L` será considerado do tipo `integer`: ```r class(3L) ``` ``` ## [1] "integer" ``` - Números racionais serão considerados como `double/numeric`: ```r class(3) ``` ``` ## [1] "numeric" ``` ```r class(3.1) ``` ``` ## [1] "numeric" ``` --- ## Lógicos - Verdadeiro (`TRUE`) ou Falso (`FALSE`) ```r class(TRUE) ``` ``` ## [1] "logical" ``` - O R entende `TRUE` sendo igual a um, e `FALSE` sendo igual a zero. - Isso significa que podemos fazer operações matemáticas com eles (como por exemplo somar): ```r TRUE + TRUE + TRUE + FALSE ``` ``` ## [1] 3 ``` --- ## Textos - **Qualquer** código entre aspas será interpretado como texto (`character`): ```r class("TEXTO") ``` ``` ## [1] "character" ``` ```r escola <- c("Fundamental", "Médio", "Superior") class(escola) ``` ``` ## [1] "character" ``` ```r class("3") ``` ``` ## [1] "character" ``` --- ## Fatores ```r # Criando factor escola_categorias <- factor(c("Fundamental", "Médio", "Superior")) escola_categorias ``` ``` ## [1] Fundamental Médio Superior ## Levels: Fundamental Médio Superior ``` ```r class(escola_categorias) ``` ``` ## [1] "factor" ``` A função `as.factor()` cria um objeto do tipo factor, ou converte um objeto existente. Na linha `levels` aparecem os rótulos do fator. --- ## Exercícios 1) Primeiro, tente adivinhar o tipo de dado dos objetos abaixo: ```r cor_favorita <- "rosa" idade <- 27L altura <- "1.75" peso <- 61.1 gosta_brocolis <- TRUE gosta_carne <- "FALSE" ``` 2) Use a função `class()` e descubra qual é o tipo dos objetos acima. --- Resposta do exercício: ```r class(cor_favorita) ``` ``` ## [1] "character" ``` ```r class(idade) ``` ``` ## [1] "integer" ``` ```r class(altura) ``` ``` ## [1] "character" ``` ```r class(peso) ``` ``` ## [1] "numeric" ``` ```r class(gosta_brocolis) ``` ``` ## [1] "logical" ``` ```r class(gosta_carne) ``` ``` ## [1] "character" ``` --- ## 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 - Operações 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 ```r NA == NA ``` ``` ## [1] NA ``` --- ## NA `is.na()` é a função que testa se um objeto é NA. ```r vetor_numerico <- c(NA, 1, 5, 2, 5, NA) is.na(vetor_numerico) ``` ``` ## [1] TRUE FALSE FALSE FALSE FALSE TRUE ``` ```r !is.na(vetor_numerico) ``` ``` ## [1] FALSE TRUE TRUE TRUE TRUE FALSE ``` --- ## Argumento importante: ### `na.rm = TRUE` ```r sum(vetor_numerico) ``` ``` ## [1] NA ``` ```r sum(vetor_numerico, na.rm = TRUE) ``` ``` ## [1] 13 ``` ```r mean(vetor_numerico) ``` ``` ## [1] NA ``` ```r mean(vetor_numerico, na.rm = TRUE) ``` ``` ## [1] 3.25 ``` --- ## Conversão de classes Podemos alterar o tipo de dado de um objeto com as funções iniciadas com `as.`: - `as.numeric()` - `as.integer()` - `as.logical()` - `as.character()` - `as.factor()` --- ## Conversão de classes **Exemplos de conversão de classes** ```r vetor_logical <- c(TRUE, FALSE, TRUE, FALSE) as.integer(vetor_logical) ``` ``` ## [1] 1 0 1 0 ``` ```r as.numeric(vetor_logical) ``` ``` ## [1] 1 0 1 0 ``` ```r as.character(vetor_logical) ``` ``` ## [1] "TRUE" "FALSE" "TRUE" "FALSE" ``` ```r as.factor(vetor_logical) ``` ``` ## [1] TRUE FALSE TRUE FALSE ## Levels: FALSE TRUE ``` --- ## Conversão de classes **Exemplos de conversão de classes** ```r frutas <- c("banana", "maça", "melancia") as.integer(frutas) ``` ``` ## [1] NA NA NA ``` ```r as.numeric(frutas) ``` ``` ## [1] NA NA NA ``` ```r as.character(frutas) ``` ``` ## [1] "banana" "maça" "melancia" ``` ```r as.factor(frutas) ``` ``` ## [1] banana maça melancia ## Levels: banana maça melancia ``` --- class: middle, center, inverse # Tipos de objetos .center[(Acompanhe no arquivo `4-tipos_objetos.R` 👩💻)] --- ## Tipos de objetos - No R, os 4 principais tipos de dados são: `vetor`, `matriz`, `lista`, `data.frame` - Vamos focar em dois: `vetor` e `data.frame`, pois: - são os que mais usamos nas tarefas comuns de análise de dados, - são conceitos importantes para utilizar o tidyverse. --- ## Vetores - Armazena elementos de mesma classe, apenas uma dimensão. - São criados usando a função `c()` - Exemplo: ```r primeiro_semestre <- c("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho") ``` ```r # Retorna o comprimento do vetor - quantos elementos ele tem? length(primeiro_semestre) ``` ``` ## [1] 6 ``` --- ## Vetores - Selecionando elementos por índice: utilizar `[]` ```r # primeiro elemento do vetor primeiro_semestre[1] ``` ``` ## [1] "Janeiro" ``` ```r # primeiro elemento até o segundo primeiro_semestre[1:2] ``` ``` ## [1] "Janeiro" "Fevereiro" ``` ```r # remove o elemento 1 primeiro_semestre[-1] ``` ``` ## [1] "Fevereiro" "Março" "Abril" "Maio" "Junho" ``` ```r # seleciona o elemento seis até o quatro # (e muda a ordem dos elementos) primeiro_semestre[6:4] ``` ``` ## [1] "Junho" "Maio" "Abril" ``` --- ## Dataframes - Possuem duas dimensões: linhas e colunas. - Cada colunas pode ser de classes diferentes. - Pense em uma tabela, como está acostumada a ver no Excel por exemplo. Exemplo: Base de dados disponível no [R Community Explorer](https://benubah.github.io/r-community-explorer). |city |country |region | members| |:----------|:-------|:-------------|-------:| |Warsaw |Poland |Europe | 2556| |Santiago |Chile |Latin America | 2060| |Washington |USA |US/Canada | 1996| |Istanbul |Turkey |Europe | 1891| |New York |USA |US/Canada | 1868| |Taipei |Taiwan |Asia | 1662| --- ### Funções úteis ```r # Retorna o número de colunas ncol(rladies) ``` ``` ## [1] 12 ``` ```r # Retorna o número de linhas nrow(rladies) ``` ``` ## [1] 192 ``` ```r # Retorna o número de colunas e linhas dim(rladies) ``` ``` ## [1] 192 12 ``` --- ### Funções úteis ```r # Retorna algumas informações sobre a base str(rladies) ``` ``` ## spec_tbl_df [192 × 12] (S3: spec_tbl_df/tbl_df/tbl/data.frame) ## $ ...1 : num [1:192] 1 2 3 4 5 6 7 8 9 10 ... ## $ name : chr [1:192] "R-Ladies Barcelona" "R-Ladies Bilbao" "R-Ladies Tucson AZ" "R-Ladies Bariloche" ... ## $ city : chr [1:192] "Barcelona" "Bilbao" "Tucson" "San Carlos de Bariloche" ... ## $ country : chr [1:192] "Spain" "Spain" "USA" "Argentina" ... ## $ region : chr [1:192] "Europe" "Europe" "US/Canada" "Latin America" ... ## $ members : num [1:192] 558 176 280 231 1582 ... ## $ fullurl : chr [1:192] "https://www.meetup.com/rladies-barcelona/" "https://www.meetup.com/rladies-bilbao/" "https://www.meetup.com/rladies-tucson-az/" "https://www.meetup.com/rladies-bariloche/" ... ## $ created : Date[1:192], format: "2016-10-22" "2019-02-27" ... ## $ status : chr [1:192] "Active" "Inactive" "Active" "Active" ... ## $ last_event : Date[1:192], format: "2020-07-01" "2020-01-14" ... ## $ past_events : num [1:192] 18 4 18 12 57 7 7 10 4 12 ... ## $ upcoming_events: num [1:192] 0 0 2 0 1 0 0 0 0 0 ... ## - attr(*, "spec")= ## .. cols( ## .. ...1 = col_double(), ## .. name = col_character(), ## .. city = col_character(), ## .. country = col_character(), ## .. region = col_character(), ## .. members = col_double(), ## .. fullurl = col_character(), ## .. created = col_date(format = ""), ## .. status = col_character(), ## .. last_event = col_date(format = ""), ## .. past_events = col_double(), ## .. upcoming_events = col_double() ## .. ) ## - attr(*, "problems")=<externalptr> ``` --- ### Funções úteis ```r summary(rladies) ``` ``` ## ...1 name city country ## Min. : 1.00 Length:192 Length:192 Length:192 ## 1st Qu.: 48.75 Class :character Class :character Class :character ## Median : 96.50 Mode :character Mode :character Mode :character ## Mean : 96.50 ## 3rd Qu.:144.25 ## Max. :192.00 ## ## region members fullurl created ## Length:192 Min. : 2.0 Length:192 Min. :2012-10-01 ## Class :character 1st Qu.: 76.0 Class :character 1st Qu.:2017-10-03 ## Mode :character Median : 237.5 Mode :character Median :2018-09-14 ## Mean : 371.7 Mean :2018-08-19 ## 3rd Qu.: 481.0 3rd Qu.:2019-09-04 ## Max. :2556.0 Max. :2020-08-15 ## ## status last_event past_events upcoming_events ## Length:192 Min. :2019-03-05 Min. : 0.00 Min. :0.000 ## Class :character 1st Qu.:2020-02-14 1st Qu.: 3.00 1st Qu.:0.000 ## Mode :character Median :2020-07-01 Median : 8.50 Median :0.000 ## Mean :2020-04-29 Mean :13.35 Mean :0.224 ## 3rd Qu.:2020-07-31 3rd Qu.:18.00 3rd Qu.:0.000 ## Max. :2020-08-20 Max. :77.00 Max. :5.000 ## NA's :21 ``` --- ### Funções úteis - Eu gosto da função glimpse, do pacote `tibble`: ```r tibble::glimpse(rladies) ``` ``` ## Rows: 192 ## Columns: 12 ## $ ...1 <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,… ## $ name <chr> "R-Ladies Barcelona", "R-Ladies Bilbao", "R-Ladies Tuc… ## $ city <chr> "Barcelona", "Bilbao", "Tucson", "San Carlos de Barilo… ## $ country <chr> "Spain", "Spain", "USA", "Argentina", "Australia", "Br… ## $ region <chr> "Europe", "Europe", "US/Canada", "Latin America", "Aus… ## $ members <dbl> 558, 176, 280, 231, 1582, 346, 511, 800, 59, 197, 610,… ## $ fullurl <chr> "https://www.meetup.com/rladies-barcelona/", "https://… ## $ created <date> 2016-10-22, 2019-02-27, 2017-11-14, 2018-05-10, 2016-… ## $ status <chr> "Active", "Inactive", "Active", "Active", "Active", "A… ## $ last_event <date> 2020-07-01, 2020-01-14, 2020-08-19, 2020-06-29, 2020-… ## $ past_events <dbl> 18, 4, 18, 12, 57, 7, 7, 10, 4, 12, 23, 37, 9, 0, 3, 1… ## $ upcoming_events <dbl> 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, … ``` --- ### Funções úteis ```r # Primeiras 6 linhas de uma tabela head(rladies) ``` ``` ## # A tibble: 6 × 12 ## ...1 name city country region members fullurl created status last_event ## <dbl> <chr> <chr> <chr> <chr> <dbl> <chr> <date> <chr> <date> ## 1 1 R-Lad… Barc… Spain Europe 558 https:… 2016-10-22 Active 2020-07-01 ## 2 2 R-Lad… Bilb… Spain Europe 176 https:… 2019-02-27 Inact… 2020-01-14 ## 3 3 R-Lad… Tucs… USA US/Ca… 280 https:… 2017-11-14 Active 2020-08-19 ## 4 4 R-Lad… San … Argent… Latin… 231 https:… 2018-05-10 Active 2020-06-29 ## 5 5 R-Lad… Melb… Austra… Austr… 1582 https:… 2016-09-02 Active 2020-07-29 ## 6 6 R-Lad… Port… Brazil Latin… 346 https:… 2017-10-30 Active 2020-07-30 ## # … with 2 more variables: past_events <dbl>, upcoming_events <dbl> ``` --- ### Funções úteis ```r # Últimas 6 linhas de uma tabela tail(rladies) ``` ``` ## # A tibble: 6 × 12 ## ...1 name city country region members fullurl created status last_event ## <dbl> <chr> <chr> <chr> <chr> <dbl> <chr> <date> <chr> <date> ## 1 187 R-Lad… Walt… USA US/Ca… 15 https:… 2020-07-03 Unbeg… NA ## 2 188 R-Lad… Conc… Chile Latin… 357 https:… 2019-04-16 Active 2020-08-01 ## 3 189 R-Lad… Talca Chile Latin… 52 https:… 2020-05-14 Active 2020-08-19 ## 4 190 R-Lad… Adel… Austra… Austr… 307 https:… 2017-02-02 Inact… 2019-10-02 ## 5 191 R-Lad… Bogo… Colomb… Latin… 276 https:… 2017-09-22 Inact… 2019-03-07 ## 6 192 Deadl… Bend USA US/Ca… 95 https:… 2019-08-11 Active 2020-08-18 ## # … with 2 more variables: past_events <dbl>, upcoming_events <dbl> ``` --- ### Selecionando elementos - Colunas - Para selecionar colunas, utilize o `$`: Dica: após escrever o `nome_do_dataframe$`, aperte `tab` para que o RStudio faça sugestões de colunas da base. ```r rladies$city ``` ``` ## [1] "Barcelona" "Bilbao" ## [3] "Tucson" "San Carlos de Bariloche" ## [5] "Melbourne" "Porto Alegre" ## [7] "Guayaquil" "Quito" ## [9] "Kansas City" "Canberra" ## [11] "Johannesburg" "Madrid" ## [13] "Frankfurt" "Houston" ## [15] "Puebla" "Xalapa" ## [17] "East Lansing" "San Diego" ## [19] "Freiburg" "Riverside" ## [21] "Nijmegen" "Lyon" ## [23] "Lausanne" "Belgrade" ## [25] "Novi Sad" "Bucharest" ## [27] "Vienna" "London" ## [29] "Salvador" "Kyiv" ## [31] "Highland Park" "Athens" ## [33] "Perth" "Brisbane" ## [35] "Santa Barbara" "Auckland" ## [37] "Goiania" "Oslo" ## [39] "Seattle" "Boulder" ## [41] "Montpellier" "Berlin" ## [43] "Newcastle Upon Tyne" "Edinburgh" ## [45] "Stockholm" "Kathmandu" ## [47] "Iowa City" "Des Moines" ## [49] "Fayetteville" "Christchurch" ## [51] "Delhi" "Toronto" ## [53] "Jakarta" "Columbus" ## [55] "Gainesville" "Addis Abeba" ## [57] "Rotterdam" "Utrecht" ## [59] "L'viv" "Copenhagen" ## [61] "Niterói" "Baltimore" ## [63] "Lima" "Atlanta" ## [65] "Denver" "Pasadena" ## [67] "Amsterdam" "Los Angeles" ## [69] "Tampa" "Mendoza" ## [71] "Cotonou" "Recife" ## [73] "Lancaster" "Göteborg" ## [75] "Lavras" "Helsinki" ## [77] "Mumbai" "Dallas" ## [79] "El Paso" "San Francisco" ## [81] "Sydney" "Philadelphia" ## [83] "Corrientes" "Santa Rosa" ## [85] "Oxford" "Montevideo" ## [87] "Chicago" "Ames" ## [89] "Cambridge" "Tbilisi" ## [91] "Niš" "Paris" ## [93] "Vancouver" "Boston" ## [95] "Santa Fe" "Manchester" ## [97] "Manaus" "London" ## [99] "Buenos Aires" "San Jose" ## [101] "Rio de Janeiro" "Montréal" ## [103] "Irvine" "Coventry" ## [105] "São Paulo" "La Paz" ## [107] "Colombo" "Syracuse" ## [109] "Nashville" "New Orleans" ## [111] "Santiago" "Monterrey" ## [113] "Nairobi" "Dublin" ## [115] "Columbia" "Chennai" ## [117] "Charlottesville" "Cape Town" ## [119] "Vitória" "Brussels" ## [121] "Strasbourg" "Orlando" ## [123] "Middletown" "Washington" ## [125] "San Francisco" "Durham" ## [127] "Valparaíso" "Belo Horizonte" ## [129] "Bari" "Milano" ## [131] "New York" "Pune" ## [133] "Bergen" "Ottawa" ## [135] "Lexington Park" "Cuernavaca" ## [137] "Buffalo" "Yaoundé" ## [139] "México City" "Cusco" ## [141] "Taipei" "Ribeirão Preto" ## [143] "Cochabamba" "Saint Louis" ## [145] "Portland" "Miami" ## [147] "Warsaw" "Minneapolis" ## [149] "Abuja" "Istanbul" ## [151] "Madison" "Budapest" ## [153] "Austin" "Ankara" ## [155] "Ushuaia" "Bogor" ## [157] "Den Bosch" "al-Khartum" ## [159] "Calgary" "Podgorica" ## [161] "Eskisehir" "Muscat" ## [163] "Oxford" "Beijing" ## [165] "Nelson" "Medellín" ## [167] "Querétaro" "Lagos" ## [169] "Florianópolis" "Puerto Ayora" ## [171] "Pachuca" "Barranquilla" ## [173] "Asunción" "Bangalore" ## [175] "Banda Aceh" "Guadalajara" ## [177] "Tunis" "Aguascalientes" ## [179] "al-Jaza´ir" "Ha Noi" ## [181] "Natal" "Fortaleza" ## [183] "General Pico" "Córdoba" ## [185] "Curitiba" "Glasgow" ## [187] "Waltham" "Concepción" ## [189] "Talca" "Adelaide" ## [191] "Bogotá" "Bend" ``` --- ### Selecionando elementos - Outra forma de selecionar elementos é utilizando os colchetes: `data_frame[numero da linha , numero da coluna]`! ```r rladies[1, 2] # Seleciona a linha 1 e a coluna 2 ``` ``` ## # A tibble: 1 × 1 ## name ## <chr> ## 1 R-Ladies Barcelona ``` --- ### Selecionando elementos - Caso deixe algum dos espaços dentro do colchete vazio, o R retornará todas (as colunas ou linhas): ```r rladies[1, ] # Seleciona a linha 1 e TODAS as colunas ``` ``` ## # A tibble: 1 × 12 ## ...1 name city country region members fullurl created status last_event ## <dbl> <chr> <chr> <chr> <chr> <dbl> <chr> <date> <chr> <date> ## 1 1 R-Lad… Barc… Spain Europe 558 https:… 2016-10-22 Active 2020-07-01 ## # … with 2 more variables: past_events <dbl>, upcoming_events <dbl> ``` ```r rladies[ , 2] # Seleciona TODAS as linhas e apenas a coluna 2 ``` ``` ## # A tibble: 192 × 1 ## name ## <chr> ## 1 R-Ladies Barcelona ## 2 R-Ladies Bilbao ## 3 R-Ladies Tucson AZ ## 4 R-Ladies Bariloche ## 5 R-Ladies Melbourne ## 6 R-Ladies Porto Alegre ## 7 R-Ladies Guayaquil ## 8 R-Ladies Quito ## 9 R-Ladies Kansas City ## 10 R-Ladies Canberra ## # … with 182 more rows ``` --- ### Dataframes e funções - Podemos utilizar as funções que já vimos (e muitas outras) em colunas do dataframe: ```r # Qual é a soma de pessoas membras na plataforma do Meetup inscritas # nos capítulos da R-Ladies? sum(rladies$members) ``` ``` ## [1] 71361 ``` ```r # Menor valor encontrado: o menor número de pessoas membras # encontrado na base min(rladies$members) ``` ``` ## [1] 2 ``` ```r # Maior valor encontrado: o maior número de pessoas membras # encontrado na base max(rladies$members) ``` ``` ## [1] 2556 ``` --- ### Dataframes e funções - Podemos utilizar as funções que já vimos (e muitas outras) em colunas do dataframe: ```r # Média do número pessoas membras por capítulo mean(rladies$members) ``` ``` ## [1] 371.6719 ``` ```r # Mediana do número pessoas membras por capítulo median(rladies$members) ``` ``` ## [1] 237.5 ``` ```r # Variância do número pessoas membras por capítulo var(rladies$members) ``` ``` ## [1] 197985.6 ``` ```r # Desvio padrão do número pessoas membras por capítulo sd(rladies$members) ``` ``` ## [1] 444.9557 ``` --- class: middle, center, inverse # Pacotes no R .center[(Acompanhe no arquivo `5-pacotes.R` 👩💻)] --- ## 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. <img src="img/icon-packages.jpg" width="400px" style="display: block; margin: auto;" /> --- ## Instalação de Pacotes: - Via CRAN: `install.packages("nome-do-pacote")` ```r install.packages("tidyverse") ``` - Via GitHub: `devtools::install_github("nome-da-org/nome-do-repo)` ```r devtools::install_github("tidyverse/dplyr") ``` --- ## Carregar pacotes: - Função: `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 é necessário utilizar aspas. --- background-image: url("img/Horst/tidyverse_celestial.png") background-position: center background-size: cover .destaque[Ilustração por <a href='https://twitter.com/allison_horst/'> Allison Horst</a>] --- # Download do material Ao final, se quiser fazer download dos arquivos que usamos, é só realizar o procedimento abaixo: 1. Na aba `Files`, selecionar todos os arquivos do projeto, clicando na caixinha ao lado de <i class="fas fa-cloud"></i> `Cloud` 2. Clique em <i class="fas fa-cog"></i> `More` 3. Selecione a opção `Export...` 4. Um arquivo `.zip` será baixado com os arquivos 😃 <img src="img/salvar-rstudio-cloud.png" width="60%" style="display: block; margin: auto;" /> --- class:middle # Aprendendo mais! .pull-left[ #### Em Português - [Material da Curso-R](http://material.curso-r.com/) <a href="http://material.curso-r.com/"> <img src="img/cursor.png" width="50%" style="display: block; margin: auto;" /> </a> ] .pull-right[ #### Em Inglês - [Livro R for Data Science](https://r4ds.had.co.nz/) <a href="https://r4ds.had.co.nz/"> <img src="img/r4ds.jpg" width="60%" style="display: block; margin: auto;" /> </a> ] --- class: middle ### R-Ladies no Brasil - Quer saber mais sobre próximos eventos das R-Ladies por aqui? Favorite este [repositório no GitHub](https://github.com/R-Ladies-Sao-Paulo/RLadies-Brasil) 💜: <center> <!-- Place this tag where you want the button to render. --> <a class="github-button" href="https://github.com/R-Ladies-Sao-Paulo/RLadies-Brasil" data-color-scheme="no-preference: light; light: light; dark: dark;" data-size="large" data-show-count="true" aria-label="Star R-Ladies-Sao-Paulo/RLadies-Brasil on GitHub">Capítulos e eventos online da R-Ladies no Brasil</a> </center> --- class: middle ### O que achou da apresentação? - Por favor, responda [este formulário](https://docs.google.com/forms/d/e/1FAIpQLSdGDGM80RJloUQXvX5N6kl2bFJSn60cpPcM_JR4AnNe9-tvgQ/viewform), pois me ajuda **muito** a melhorar os materiais e as apresentações 💜. <!-- <center> --> <!-- <iframe src="https://docs.google.com/forms/d/e/1FAIpQLSdGDGM80RJloUQXvX5N6kl2bFJSn60cpPcM_JR4AnNe9-tvgQ/viewform" height="100%" width="100%" style="min-height: 400px;"></iframe> --> <!-- </center> --> --- class: center, middle # Obrigada! R-Ladies São Paulo por [este material](https://beatrizmilz.github.io/2020-R-Ladies-SP-Basico/#1). Slides criados com o pacote [**xaringan**](https://github.com/yihui/xaringan). Tema criado com o pacote [**xaringanthemer**](https://pkg.garrickadenbuie.com/xaringanthemer/) e funções extras com [**xaringanExtra**](https://pkg.garrickadenbuie.com/xaringanExtra/) e [**countdown**](https://github.com/gadenbuie/countdown). Várias ilustrações usadas na apresentação foram feitas por <a href='https://twitter.com/allison_horst/'> Allison Horst</a>. Clique [aqui](https://github.com/allisonhorst/stats-illustrations) para ver várias outras artes feitas por ela! O maravilhoso logo da R-Ladies usado nesta apresentação é uma obra de [Bea @Chucheria](https://twitter.com/chucheria)! Obrigada!