Pacote Stringr
Hellen Sonaly Silva Alves
hellensilva.estat@gmail.com
http://lattes.cnpq.br/4845253626067527
Gabriel Graciano de Mendonça
gabriel.gracianom@ufrpe.br
http://lattes.cnpq.br/5536790670777917
Introdução
Neste tutorial, vamos conhecer o pacote stringr, que faz parte do ecossistema tidyverse e é utilizado para facilitar a manipulação de textos (strings) no R.
O stringr oferece funções simples, consistentes e fáceis de memorizar para tarefas comuns, como: - trabalhar com textos, - localizar padrões, - substituir palavras, - contar caracteres, - e extrair informações de strings.
Antes de começar, é importante garantir que você tenha o
R e o RStudio instalados em seu
computador.
Caso ainda não tenha, consulte o tutorial abaixo:
- Como instalar o R e o RStudio:
https://www.rpubs.com/Hellen_Silva/1384633
Se você é iniciante e ainda não está familiarizado com o ambiente do RStudio, recomendo também a leitura do material introdutório:
- Introdução ao R – Parte 1: Primeiros Passos:
https://www.rpubs.com/Hellen_Silva/1384634
Este tutorial é voltado para iniciantes e tem como objetivo apresentar, de forma prática, as principais funções do pacote stringr.
Strings
Strings são sequências de caracteres, como letras, números, espaços e símbolos, utilizadas para representar textos no R.
O pacote stringr foi criado por :contentReferenceoaicite:0 com o objetivo de facilitar a manipulação de variáveis do tipo string. Ele simplifica tarefas comuns relacionadas a textos, como criação, modificação, identificação de padrões e remoção de espaços, de forma mais intuitiva e eficiente.
Vantagens do pacote stringr
- Sintaxe simples, o que facilita a leitura e a memorização do código;
- Funções vetorizadas, permitindo trabalhar com vários elementos ao mesmo tempo;
- Resultados rápidos e eficientes, pois o pacote é implementado em C e C++.
Como utilizar o stringr
Antes de começar a utilizar o pacote stringr, é necessário instalá-lo e carregá-lo no R
##
## There is a binary version available but the source version is later:
## binary source needs_compilation
## stringr 1.5.1 1.6.0 FALSE
As funções do pacote stringr utilizam o prefixo
str_, o que facilita sua identificação no R.
Ao digitar str_ e pressionar a tecla TAB,
é possível visualizar todas as funções disponíveis, juntamente com uma
breve descrição de suas finalidades.
Funções básicas
Exemplo utilizando a função str_length()
A função str_length() retorna o número de caracteres de
cada string presente em um vetor.
É importante destacar a diferença entre str_length() e
length(): - str_length() informa o
número de caracteres de cada elemento do vetor; -
length() retorna o comprimento do vetor,
ou seja, a quantidade de elementos.
## [1] 11 10 9 7 10
## [1] 5
Observação: espaços em branco também são considerados caracteres
Exemplo utilizando as funções str_to_upper(),
str_to_lower() e str_to_title()
As funções str_to_upper(), str_to_lower() e
str_to_title() são utilizadas para modificar a
caixa das letras em strings.
str_to_upper(): converte todos os caracteres para caixa alta (maiúsculas);str_to_lower(): converte todos os caracteres para caixa baixa (minúsculas);str_to_title(): converte a primeira letra de cada palavra para caixa alta.
Exemplo utilizando a função str\_trim
A função str_trim() é utilizada para remover espaços em branco no início e no final das strings.
A presença de espaços excedentes pode causar problemas na análise de dados, como a criação de categorias diferentes para valores que deveriam ser iguais.
## [1] PB PB PE PE PB PE
## Levels: PE PB PB PE
## [1] PB PB PE PE PB PE
## Levels: PB PE
Exemplo utilizando a função str_sub()
A função str_sub() é utilizada quando precisamos
extrair uma parte específica de uma string.
Ela possui dois argumentos principais:
start: indica a posição inicial da extração;end: indica a posição final da extração.
É possível utilizar valores negativos, que contam as posições a partir do final da string.
Exemplo
## [1] "Aluno" "Aluno" "Aluno"
## [1] "01" "02" "03"
## [1] "01" "02" "03"
Neste caso, o valor negativo em end indica que a
contagem é feita a partir do final da string, removendo os últimos 6
caracteres.
Exemplo utilizando a função str_c()
A função str_c() é semelhante à função
paste0() (da base do R) e é utilizada para
concatenar strings, ou seja, unir textos.
Exemplo utilizando a função str\_sort e
str\_rank
A função str_sort() permite ordenar strings de forma
flexível, como por ordem alfabética.
Exemplo com str\_sort
## [1] "abacaxi" "banana" "laranja" "manga"
Expressões Regulares (REGEX)
Expressões regulares, também conhecidas como REGEX,
são padrões utilizados para identificar, localizar ou manipular
textos.
Elas permitem reconhecer conjuntos de caracteres, palavras ou formatos
específicos por meio de uma sintaxe própria.
O pacote stringr utiliza expressões regulares em diversas funções, especialmente para busca, substituição e validação de textos.
Metacaracteres
As expressões regulares utilizam alguns sinais
especiais, chamados de metacaracteres, para
representar padrões em strings.
Os metacaracteres mais utilizados são:
.→ representa qualquer caractere;?→ indica que o item anterior é opcional (0 ou 1 vez);+→ combina o item anterior uma ou mais vezes;*→ combina o item anterior zero ou mais vezes;^→ corresponde ao início da string;$→ corresponde ao final da string;|→ operador lógico “ou”;\\→ utilizado para escapar um caractere especial;[ ]→ cria uma classe de caracteres.
Classes de caracteres
Uma classe de caracteres representa um conjunto de
caracteres que pode corresponder a qualquer um dos elementos definidos
dentro da classe.
Essas classes podem incluir letras, números, símbolos ou intervalos de
caracteres.
Principais classes predefinidas
[[:lower:]]→ letras minúsculas (a–z), incluindo letras com acentuação;[[:upper:]]→ letras maiúsculas (A–Z), incluindo letras com acentuação;[[:alpha:]]→ letras (minúsculas e maiúsculas);[[:digit:]]→ números de 0 a 9;[[:punct:]]→ sinais de pontuação e caracteres especiais;[[:blank:]]→ espaços e tabulações;[[:space:]]→ espaços, tabulações e quebras de linha;[[:alnum:]]→ letras e números;[[:graph:]]→ caracteres visíveis (letras, números e pontuação);[[:print:]]→ caracteres imprimíveis (inclui espaços).
Principais exemplos de REGEX
Abaixo estão alguns exemplos comuns de expressões regulares utilizadas com o pacote stringr:
'par$'→ reconhece textos que terminam exatamente com"par";'^par'→ reconhece textos que começam exatamente com"par";'p ?ar'→ reconhece"par"com ou sem espaço entre"p"e"a";"par"→ reconhece"par"em letras minúsculas;"PAR"→ reconhece"PAR"em letras maiúsculas.
Funções com uso de REGEX
Exemplo utilizando a função str_detect()
A função str_detect() retorna um valor
lógico (TRUE ou FALSE),
indicando se cada elemento da string atende ou não ao
padrão definido pela expressão regular (REGEX).
Exemplo
## [1] TRUE TRUE FALSE FALSE
No exemplo acima, o padrão “par$” identifica apenas as strings que terminam exatamente com “par”.
## [1] TRUE FALSE TRUE FALSE
Neste caso, o padrão “^par” identifica as strings que começam com “par”.
## [1] TRUE TRUE TRUE FALSE
Aqui, o metacaractere ? indica que a letra “p” é opcional, ou seja, o padrão reconhece strings com “ar” ou “par”.
## [1] TRUE TRUE TRUE FALSE
O padrão “par” reconhece apenas as ocorrências em letras minúsculas, não identificando “PAR”.
## [1] FALSE FALSE FALSE TRUE
Neste caso, o padrão reconhece apenas as ocorrências em letras maiúsculas.
Utilizando o operador OU (|)
Também é possível utilizar o operador | (OU) para reconhecer mais de um padrão ao mesmo tempo.
## [1] TRUE TRUE TRUE FALSE
Nesse exemplo, a função identifica strings que contêm “par” ou “paren”.
Exemplo utilizando as funções str_extract() e
str_extract_all()
As funções str_extract() e
str_extract_all() são utilizadas para extrair
padrões específicos de uma string com o auxílio de expressões
regulares.
str_extract()retorna a primeira ocorrência do padrão encontrado em cada string;str_extract_all()retorna todas as ocorrências do padrão em cada string.
Exemplo
municipios <- c(
"Campina Grande",
"Joao Pessoa",
"Abreu e Lima",
"Boa Viagem",
"Sao Paulo",
"Rio de Janeiro"
)
str_extract(municipios, "[[:alpha:]]+")## [1] "Campina" "Joao" "Abreu" "Boa" "Sao" "Rio"
Exemplo utilizando as funções str_replace() e
str_replace_all()
As funções str_replace() e
str_replace_all() são utilizadas para substituir
padrões em strings por outros valores.
Elas são muito úteis no processo de padronização e limpeza de
dados textuais, especialmente quando uma mesma informação
aparece escrita de várias formas.
str_replace()substitui apenas a primeira ocorrência do padrão;str_replace_all()substitui todas as ocorrências encontradas.
Exemplo
municipio <- c(
"CAMPINA GRANDE", "Campina Grande", "CG",
"CAMP.GRANDE", "CG", "CG",
"CAMP.GRANDE", "CAMPINA GRANDE"
)
municipio %>%
str_replace("CAMP\\.", "CAMPINA ") %>%
str_replace("CG", "CAMPINA GRANDE") %>%
str_to_title()## [1] "Campina Grande" "Campina Grande" "Campina Grande" "Campina Grande"
## [5] "Campina Grande" "Campina Grande" "Campina Grande" "Campina Grande"
Observação: o ponto (.) é um metacaractere do REGEX que representa qualquer caractere. Por isso, foi necessário escapá-lo utilizando \. para que ele seja interpretado literalmente.
Exemplo utilizando as funções str_replace_all() e
str_squish()
Neste exemplo, vamos trabalhar com um vetor de números de telefone que apresentam caracteres especiais e espaços inconsistentes.
telefone <- c(
"(81)94002- 8922",
"(83) 99113 -1313",
"(83) 99876-5432",
"(81) 99812 - 3456"
)
t1 <- str_replace_all(telefone, "[()\\-]", " ")
t1## [1] " 81 94002 8922" " 83 99113 1313" " 83 99876 5432"
## [4] " 81 99812 3456"
Após a substituição dos parênteses e do hífen por espaços, podemos observar que o vetor ainda apresenta excesso e inconsistência de espaçamentos.
Para resolver esse problema, utilizamos a função str_squish(), que remove espaços excedentes, deixando apenas um único espaço entre os elementos.
## [1] "81 94002 8922" "83 99113 1313" "83 99876 5432" "81 99812 3456"
Exemplo utilizando a função str_split()
As funções str_split() e str_split_fixed()
são utilizadas para dividir uma string em várias
partes, a partir de um delimitador.
str_split()retorna uma lista, pois cada string pode ser dividida em um número diferente de partes;str_split_fixed()retorna uma matriz, sendo necessário informar o número de divisões desejadas.
Exemplo
hino <- c(
"Ouviram do Ipiranga as margens plácidas,
De um povo heroico, o brado retumbante,
E o Sol da liberdade, em raios fúlgidos
Brilhou no céu da pátria nesse instante,
Se o penhor dessa igualdade
Conseguimos conquistar com braço forte
Em teu seio, ó liberdade,
Desafia o nosso peito a própria morte"
)
str_split(hino, fixed(","))## [[1]]
## [1] "Ouviram do Ipiranga as margens plácidas"
## [2] "\n De um povo heroico"
## [3] " o brado retumbante"
## [4] "\n E o Sol da liberdade"
## [5] " em raios fúlgidos\n Brilhou no céu da pátria nesse instante"
## [6] "\n Se o penhor dessa igualdade\n Conseguimos conquistar com braço forte\n Em teu seio"
## [7] " ó liberdade"
## [8] "\n Desafia o nosso peito a própria morte"
Exemplo utilizando as funções str_remove() e
str_remove_all()
Como o próprio nome sugere, as funções str_remove() e
str_remove_all() são utilizadas para remover
padrões de uma string com base em expressões regulares.
str_remove()remove apenas a primeira ocorrência do padrão encontrado;str_remove_all()remove todas as ocorrências do padrão.
Exemplo
hino <- c(
"Somos campeoes, Da Paraiba somos o melhor, Somos campeoes, Treze querido tu es o maior"
)
str_remove(hino, ",")## [1] "Somos campeoes Da Paraiba somos o melhor, Somos campeoes, Treze querido tu es o maior"
No exemplo acima, apenas a primeira vírgula é removida da string.
## [1] "Somos campeoes Da Paraiba somos o melhor Somos campeoes Treze querido tu es o maior"
Já neste caso, todas as vírgulas presentes na string são removidas.
Exemplo utilizando a função abjutils::rm_accent()
A função rm_accent(), do pacote
abjutils, é utilizada para remover acentos de
caracteres em strings.
Ela é particularmente útil quando trabalhamos com textos em português e
precisamos padronizar a escrita, facilitando
comparações, buscas e análises de dados textuais.
Conclusão
Com base nos exemplos apresentados, podemos concluir que o pacote stringr é uma ferramenta fundamental para a manipulação de strings no R. Ele oferece métodos simples e eficientes para realizar operações como busca, extração, substituição e manipulação de padrões em dados textuais.
Além disso, o stringr contribui significativamente para o aumento da produtividade, pois simplifica tarefas complexas, automatiza processos repetitivos e reduz a probabilidade de erros durante a análise de dados. Dessa forma, o pacote se torna um aliado essencial no tratamento e na preparação de dados textuais para análises mais robustas.