-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathslide-intro-r-parte-ii.qmd
302 lines (208 loc) · 7.3 KB
/
slide-intro-r-parte-ii.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
---
title: "Introdução ao R - Parte II"
subtitle: "Oficina de Introdução ao R"
author: "[R-Ladies São Paulo](https://www.meetup.com/rladies-sao-paulo/)"
date: "2023-06-24"
format:
rladies-revealjs:
footer: "Slides feitos com [Quarto](https://quarto.org/docs/presentations/revealjs/index.html) e [Quarto R-Ladies Theme](https://github.com/beatrizmilz/quarto-rladies-theme#quarto-r-ladies-theme)."
incremental: false
knitr:
opts_chunk:
fig.align: "center"
echo: true
eval: true
---
# Conceitos iniciais de programação
## Scripts
- Podemos salvar nossos scripts para utilizar depois!
- Considere tudo no console como temporário, pois não salvamos o conteúdo.
- Escreva no Script/Editor os códigos importantes para a análise.
```{r echo=FALSE, out.width="100%"}
knitr::include_graphics("https://r4ds.hadley.nz/diagrams/rstudio-editor.png")
```
## R como uma calculadora
- Podemos usar o R como uma calculadora:
```{r}
1 / 200 * 30
(59 + 73 + 2) / 3
```
## Executando códigos
- O atalho `Cmd/Ctrl + Enter` é um dos mais úteis! Executa o código selecionado, ou o trecho de código onde o cursor está.
- O atalho `Cmd/Ctrl + Shift + S` executa todos os códigos do script!
## Criando objetos
- Podemos criar objetos (e guardar resultados) usando o operador de atribuição `<-`, e a estrutura a seguir:
````
``` {{r}}
nome_do_objeto <- valor
```
````
Exemplo:
```{r}
x <- 3 * 4
```
Podemos ver o conteúdo do objeto escrevendo o nome e executando:
```{r}
x
```
## Boas práticas e objetos
- Atalho `Alt -` (Alt e menos) serve para escrever o sinal de atribuição mais rápido.
- O sinal `=` também funciona neste caso: porém como boa prática de escrita de código nós não usamos
- Aproveite para usar a tecla Tab no RStudio: ajuda a autocompletar!
- O R é *case sensitive*: ele diferencia letras maiúsculas e minúsculas.
```{r}
r_rocks <- 2 ^ 3
```
```{r eval=FALSE, include=TRUE}
r_rock
#> Error: object 'r_rock' not found
R_rocks
#> Error: object 'R_rocks' not found
r_rocks
#> [1] 8
```
## Boas práticas e objetos
- Erros de digitação e de maiúscula/minúscula importam!
- Cuidado ao dar nomes aos objetos:
```{r eval=FALSE, include=TRUE}
eu_uso_snake_case
outrasPessoasUsamCamelCase
algumas.pessoas.usam.pontos
E_Algumas.Pessoas_RENUNCIAMconvenções
```
## Entendendo melhor um objeto
Um objeto é onde nossos dados são armazenados dentro do R.
Um objeto sempre tem uma **classe** e um **tipo**
Geralmente chamamos de "valor" tudo o que está dentro de um objeto, PORÉM:
- Valores não precisam ser números.
- Eles podem ser texto, por exemplo.
```{r}
#| echo: true
pessoa <- "Bruna"
pessoa
```
## As classes dos objetos
- Os objetos podem conter dados de diferentes naturezas (um texto, um número, um booleano). **É o quê estamos armazenando. Principais:**
| CLASSE | SINÔNIMO |
|---------------|-------------------------------------------------------|
| **character** | texto, string, caractere |
| **integer** | números inteiros |
| **numeric** | números racionais (número representado por uma fração |
| **logic** | lógico, booleano, valor TRUE/FALSE |
## Exemplos de classes
```{r}
nome <- 'Rladies' # texto
nome
idade <- '40' # texto
idade
idade2 <- 40L # numero inteiro
idade2
passagem <- 4.40 # numero decimal
passagem
```
## Exemplos de classes
```{r}
sou_linda <- TRUE # booleano
sou_linda
```
## Exemplos de classes
DICA: a função `class()` mostra a classe de um objeto
```{r}
nome <- 'R-ladies SP'
class(nome)
passagem <- 4.40
class(passagem)
```
## Os tipos de objetos
É como armazenamos os dados dentro do R. Principais neste momento:
**Vector:** armazena elementos de mesma classe.
**Data.frame:** são tabelas de dados com linhas e colunas, como uma tabela do Excel. C ada coluna pode ser de classe diferente. Dentro de cada coluna, teremos sempre a mesma classe!
## NA
Uma característica importante do R que pode dicultar a comparação são os valores ausentes ou NAs (não disponíveis).
```{r}
NA > 10
```
```{r}
NA == NA
```
`is.na()` é a função que testa se um objeto é NA
## Operadores relacionais
| Operador | Descrição |
|----------|--------------------|
| == | igual |
| != | diferente |
| \> | maior |
| \< | menor |
| \>= | maior ou igual a |
| \<= | menor ou igual que |
## Operadores lógicos
| Operador | Descrição |
|----------|--------------------|
| ! | significa NÃO |
| & | significa E |
| `|` | significa OU |
| %in% | significa "contém" |
## O que é uma função?
- Função: uma palavra que, no código, dá um comando ao computador.
- Ela é escrita seguida de parênteses.
- Nos parênteses incluímos os argumentos.
- O output vai ser a informação que o computador retorna após rodar a função.
(pense nela como um **verbo**!)
## Função no R
```{r}
#| echo: true
#| fig-width: 10
#| fig-height: 4.5
altura_carol <- 1.54
altura_lucas <- 1.89
altura_media <- mean(c(altura_carol, altura_lucas))
altura_media
```
<br>
- mean = função para calcular a média
- argumentos = informações que vão entre parênteses para indicar o que a função deve fazer
- c() = para criar um vetor (uma lista com mais de um item a ser aplicado no cálculo)
## Utilizando funções
- O R possui muitas funções disponíveis
- Estrutura para utilizar uma função:
```{r eval=FALSE, include=TRUE}
nome_da_funcao(nome_do_argumento_1 = valor_para_o_argumento1,
nome_do_argumento_2 = valor_para_o_argumento2,
nome_do_argumento_3 = valor_para_o_argumento3,
...)
```
Exemplo:
```{r}
seq(from = 1, to = 10)
```
- Parênteses (e aspas) sempre devem estar em "duplas": se abrirmos, temos que fechar.
## O que é um pacote de R?
- Conjunto de funções úteis pra determinada análise.
- Eles são disponibilizados em repositórios. Os dois principais repositórios são o [CRAN](https://cran.r-project.org/) e o [GitHub](https://github.com/).
- Os pacotes são **instalados apenas uma vez** e devem **ser carregados sempre** que queremos utilizá-los.
## Instalar e carregar pacotes
- Para instalar um pacote que está no CRAN, usamos a função install.packages:
``` r
install.packages("tidyverse")
```
- Caso o pacote esteja no GitHub, é possível fazer a instalação via função install_github do pacote devtools:
``` r
install.packages("devtools")
devtools::install_github('rfsaldanha/microdatasus')
```
- Para carregar o pacote usamos a função library:
``` r
library(tidyverse)
```
## Boas práticas (resumo)
**Nome de variáveis:**
a) Não usar maiúscula, espaços ou acentos pra criar o nome
b) Não começar o nome com um número
c) Escolher nomes úteis e não redundantes
**Código e comentários:**
a) Inserir espaços só após as vírgulas e parênteses
b) Comente seu código (com a hashtag #)
c) Use a quebra de linha para facilitar a leitura
## Erros mais comuns!
- Rodar uma linha de código sem ter rodado as anteriores, que fazem parte de uma "sequência" de comandos para o programa
- Pequenos erros de digitação ao escrever o código