-
Notifications
You must be signed in to change notification settings - Fork 0
/
02-basico.Rmd
169 lines (114 loc) · 4.61 KB
/
02-basico.Rmd
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
---
title: "Conceitos básicos"
author: "Daniel Falbel, William Amorim"
---
## Conceitos básicos
```{r, message=FALSE, warning=FALSE, include=FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
out.width = "60%", out.height = "60%",
fig.retina = 2
)
```
Todas as funções do `stringr` começam com o prefixo `str_`. Isso ajuda na hora de
encontrar a função que você está procurando. No RStudio, digite `str_` e
aperte **TAB** para visualizar a lista de funções com esse prefixo. Você pode verificar o que cada função faz até encontrar a que atende às suas necessidades.
![str_tab](figures/str_tab.png)
Nesta seção, vamos utilizar as funções mais simples do `stringr`. Em seguida, vamos falar um pouco de regex e então veremos funções mais avançadas do pacote.
Antes de mais nada, instale e carregue o pacote `stringr`.
```{r, eval = FALSE}
install.packages("stringr")
```
```{r, message = FALSE, warning = FALSE}
library(stringr)
```
### str_length
A função mais simples do `stringr()` é a função `str_length()`. Esta função recebe como argumento um vetor de *strings* e retorna o número de caracteres de cada *string*. Repare que o espaço `" "` é considerado um caracter.
```{r}
str_length("São Paulo")
str_length(c("São Paulo", "Rio de Janeiro",
"Rio Grande do Norte", "Acre"))
```
Note que `str_length()` é diferente de `length()`. O primeiro retorna o número de caracteres e o segundo retorna o comprimento do objeto. Isso fica mais claro no seguinte exemplo:
```{r}
s <- c("São Paulo", "Rio de Janeiro",
"Rio Grande do Norte", "Acre")
str_length(s)
length(s)
```
A função `str_length()` retornou um vetor com o número de caracteres de cada elemento do vetor `s`, enquanto `length()` retornou o comprimento do vetor `s`.
### str_to_upper, str_to_lower, str_to_title
Essas funções servem para modificar a caixa das letras. Veja alguns exemplos:
```{r}
s <- "Somos a curso-r"
str_to_lower(s)
str_to_upper(s)
str_to_title(s)
```
### str_trim
É muito comum encontrar textos que vêm com espaços a mais, principalmente de dados
provenientes de formulários em que cada usuário escreve da forma que prefere. Isso é um problema pois cria categorias diferentes para valores que deveriam ser iguais. Espaços antes e após o texto são especialmente chatos, pois pode ser difícil detectá-los.
```{r}
s <- c("M", "F", "F", " M", " F ", "M")
as.factor(s)
```
A função `str_trim()` ajuda removendo os espaços excedentes antes e depois da string.
```{r}
string_aparada <- str_trim(s)
as.factor(string_aparada)
```
### str_sub
Não é raro você precisar obter uma parte fixa de uma *string*, como, por exemplo, manipular textos da forma:
```{r}
s <- c("01-Feminino", "02-Masculino", "03-Indefinido")
```
Você pode querer apenas a parte final da string. Neste caso, pode usar a função `str_sub()`.
```{r}
str_sub(s, start = 4) # pegar do quarto até o último caractere
```
Também é possível obter apenas os números.
```{r}
str_sub(s, end = 2) # pegar apenas os dois primeiros caracteres
```
Em outros casos você precisa obter os últimos 2 caracteres.
```{r}
s <- c("Feminino-01", "Masculino-02", "Indefinido-03")
str_sub(s, end = -4)
str_sub(s, start = -2)
```
É possível usar os argumentos `start` e `end` conjuntamente.
```{r}
s <- c("__SP__", "__MG__", "__RJ__")
str_sub(s, 3, 4)
```
### str_c
Concatena *strings* em uma única string.
```{r}
string1 <- "O valor p é: "
string2 <- 0.03
str_c(string1, string2) # Números serão transformados em caracteres.
# Pode misturar objetos com strings definidas diretamente na função.
string1 <- "Brigadeiro"
string2 <- "bom"
string3 <- "melhor"
str_c(string1, " é a prova de que não existe nada tão ", string2,
" que não pode ficar ", string3, ".")
# A função é vetorizada.
string1 <- c("Brigadeiro", "A política brasileira")
string2 <- c("bom", "ruim")
string3 <- c("melhor", "pior")
str_c(string1, " é a prova de que não existe nada tão ", string2,
" que não pode ficar ", string3, ".")
# Pode ser usada para "criar código".
variaveis <- names(mtcars)
variaveis
variaveis_explicativas <- str_c(variaveis[-1], collapse = " + ")
formula <- str_c(variaveis[1], " ~ ", variaveis_explicativas)
formula
as.formula
# Modeloo linear (Off-topic)
fit <- lm(formula, data = mtcars)
summary(fit)
```
Essas são as funções mais simples do pacote `stringr` e não exigem nenhum conhecimento de **expressões regulares**. Note que nenhuma delas possui o parâmetro `pattern`. Você verá como especificar esse parâmetro nas próximas seções.
--------------------------------------------------------------------------------