-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path01-intro.Rmd
38 lines (27 loc) · 2.05 KB
/
01-intro.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
---
title: "Strings"
author: "Daniel Falbel, William Amorim"
---
```{r, message=FALSE, warning=FALSE, include=FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
out.width = "60%", out.height = "60%",
fig.retina = 2
)
```
Variáveis de texto são muito comuns nos bancos de dados e, geralmente, dão bastante trabalho para serem manipuladas. É muito comum encontrarmos colunas com categorias não padronizadas, como, por exemplo, uma variável `Estado` com "SP", "sp", "Sao Paulo", "São Paulo" etc, todas indicando o mesmo estado.
O R possui várias funções para manipular textos (ou *strings*). No entanto, as funções do `base` não possuem uma interface consistente e cada uma tem a sua forma de passar os parâmetros, dificultando a programação durante a análise.
Pensando nisso, Hadley Wickham deu aquela força para a comunidade R e criou o pacote `stringr`, que possui uma sintaxe consistente, permitindo o usuário manipular textos com muito mais facilidade.
### Vantagens do stringr em relação ao base
- Sintaxe unificada, o que auxilia na memorização e leitura do código.
- Todas as funções são vetorizadas.
- Construído sobre a [biblioteca ICU](http://site.icu-project.org/), implementada em `C` e `C++`. É uma garantia de resultados mais rápidos e confiáveis.
### Regras básicas do pacote
- As funções de manipulação de texto começam com `str_`. Caso esqueça o nome de uma função, basta digitar `stringr::str_` e apertar `TAB` para ver quais são as opções.
- O primeiro argumento da função é sempre uma *string* ou um vetor de *strings*.
### Curiosidade
Inicialmente, o `stringr` era um *wrapper* de funções do `base`. Depois disso,
surgiu um novo pacote `stringi`, com sintaxe similar ao `stringr`, mas funcionando como *wrapper* da biblioteca ICU. Wickham gostou tanto do pacote `stringi`
que decidiu reescrever o `stringr` como um *wrapper* do `stringi`.
Veja [essa página](https://github.com/tidyverse/stringr/blob/master/NEWS.md) para detalhes.
--------------------------------------------------------------------------------