Pacote TidierStrings.jl

Manipulação de Dados
Tidy
Ferramentas
Pacotes

O pacote TidierStrings.jl emula a facilidade do StringR, unindo manipulação de strings com dados Tidy. Neste post, serão apresentadas as principais funções do pacote.

Autores
Afiliação

Universidade Estadual de Campinas

Universidade Estadual de Campinas

Data de Publicação

23 de outubro de 2025

Introdução

A manipulação de strings (sequência de caracteres) é indispensável na manipulação de bancos de dados, e a linguagem Julia oferece suporte nativo para esse tipo de operação, dispensando o uso de pacotes adicionais. Mas qual a melhor forma de lidar com dados no formato Tidy?

O pacote TidierStrings.jl emula a facilidade do StringR, da linguagem R, trazendo para Julia uma integração entre manipulação de strings e dados organizados no formato Tidy. Esse estilo consiste em dados tabulares estruturados de modo que cada coluna representa uma variável, cada linha uma observação e cada célula um valor.

Neste post, serão apresentadas e exemplificadas funções de remoção, substituição, correspondência e modificação disponíveis no TidierStrings.jl.

Carregando os pacotes

Para instalar os pacotes necessários e carregar seus comandos no ambiente, execute as seguintes linhas de código:

import Pkg
Pkg.add(["TidierStrings", "Tidier"])

using Tidier, TidierStrings

Além disso, utilizaremos o pacote RDataSets para importar bancos de dados originários do R e usaremos o conjunto de dados Titanic como exemplo para aplicar as funções.

import Pkg    
Pkg.add("RDatasets")
using RDatasets

titanic = dataset("datasets", "Titanic")

Selecionaremos apenas as 10 primeiras observaçÕes das variáveis do tipo “String”, correspondentes às quatro primeiras colunas do banco de dados:

titanic = first(titanic[:, 1:4], 10)
10×4 DataFrame
 Row │ Class    Sex      Age      Survived
     │ String7  String7  String7  String3
─────┼─────────────────────────────────────
   1 │ 1st      Male     Child    No
   2 │ 2nd      Male     Child    No
   3 │ 3rd      Male     Child    No
   4 │ Crew     Male     Child    No
   5 │ 1st      Female   Child    No
   6 │ 2nd      Female   Child    No
   7 │ 3rd      Female   Child    No
   8 │ Crew     Female   Child    No
   9 │ 1st      Male     Adult    No
  10 │ 2nd      Male     Adult    No

Funções

str_replace(), str_replace_all()

A função str_replace() substitui a primeira ocorrência do padrão indicado no segundo argumento pelo valor informado no terceiro argumento. No exemplo abaixo, a primeira letra “e” minúscula encontrada em cada elemento da coluna Sex foi substituída pela sua equivalente maiúscula.

@mutate(titanic, Sex = str_replace(Sex, "e", "E"))
10×4 DataFrame
 Row │ Class    Sex     Age      Survived
     │ String7  String  String7  String3
─────┼────────────────────────────────────
   1 │ 1st      MalE    Child    No
   2 │ 2nd      MalE    Child    No
   3 │ 3rd      MalE    Child    No
   4 │ Crew     MalE    Child    No
   5 │ 1st      FEmale  Child    No
   6 │ 2nd      FEmale  Child    No
   7 │ 3rd      FEmale  Child    No
   8 │ Crew     FEmale  Child    No
   9 │ 1st      MalE    Adult    No
  10 │ 2nd      MalE    Adult    No

str_replace_all() substitui todas as ocorrências do padrão no conjunto de strings especificado.

@mutate(titanic, Sex = str_replace_all(Sex, "e", "E"))
10×4 DataFrame
 Row │ Class    Sex     Age      Survived
     │ String7  String  String7  String3
─────┼────────────────────────────────────
   1 │ 1st      MalE    Child    No
   2 │ 2nd      MalE    Child    No
   3 │ 3rd      MalE    Child    No
   4 │ Crew     MalE    Child    No
   5 │ 1st      FEmalE  Child    No
   6 │ 2nd      FEmalE  Child    No
   7 │ 3rd      FEmalE  Child    No
   8 │ Crew     FEmalE  Child    No
   9 │ 1st      MalE    Adult    No
  10 │ 2nd      MalE    Adult    No

str_remove(), str_remove_all()

De forma análoga às funções anteriores, str_remove() remove a primeira ocorrência do padrão informado no segundo argumento, enquanto str_remove_all() remove todas as ocorrências desse padrão nas strings indicadas no primeiro argumento.

@mutate(titanic, Sex = str_remove(Sex, "e"))
10×4 DataFrame
 Row │ Class    Sex     Age      Survived
     │ String7  String  String7  String3
─────┼────────────────────────────────────
   1 │ 1st      Mal     Child    No
   2 │ 2nd      Mal     Child    No
   3 │ 3rd      Mal     Child    No
   4 │ Crew     Mal     Child    No
   5 │ 1st      Fmale   Child    No
   6 │ 2nd      Fmale   Child    No
   7 │ 3rd      Fmale   Child    No
   8 │ Crew     Fmale   Child    No
   9 │ 1st      Mal     Adult    No
  10 │ 2nd      Mal     Adult    No
@mutate(titanic, Sex = str_remove_all(Sex, "e"))
10×4 DataFrame
 Row │ Class    Sex     Age      Survived
     │ String7  String  String7  String3
─────┼────────────────────────────────────
   1 │ 1st      Mal     Child    No
   2 │ 2nd      Mal     Child    No
   3 │ 3rd      Mal     Child    No
   4 │ Crew     Mal     Child    No
   5 │ 1st      Fmal    Child    No
   6 │ 2nd      Fmal    Child    No
   7 │ 3rd      Fmal    Child    No
   8 │ Crew     Fmal    Child    No
   9 │ 1st      Mal     Adult    No
  10 │ 2nd      Mal     Adult    No

str_detect()

Essa função identifica padrões nas strings especificadas e pode utilizar operadores lógicos, como | e &. No exemplo abaixo, foram filtradas as observações que correspondiam a passageiros (excluindo tripulantes).

TidierData.@filter(titanic, str_detect(Class, "d | s"))
8×4 DataFrame
 Row │ Class    Sex      Age      Survived
     │ String7  String7  String7  String3
─────┼─────────────────────────────────────
   1 │ 1st      Male     Child    No
   2 │ 2nd      Male     Child    No
   3 │ 3rd      Male     Child    No
   4 │ 1st      Female   Child    No
   5 │ 2nd      Female   Child    No
   6 │ 3rd      Female   Child    No
   7 │ 1st      Male     Adult    No
   8 │ 2nd      Male     Adult    No

str_to_upper()

A função str_to_upper() converte todos os caracteres de uma string para maiúsculas. Existem outras funções com estrutura semelhante que modificam o formato das strings:

  • str_to_lower(): converte todos os caracteres para minúsculas;
  • str_to_sentence(): deixa apenas o primeiro caractere em maiúsculo;
  • str_to_title(): coloca em maiúscula a primeira letra de cada palavra e mantém as demais em minúsculas.
@mutate(titanic, Age = str_to_upper(Age))
10×4 DataFrame
 Row │ Class    Sex      Age     Survived
     │ String7  String7  String  String3
─────┼────────────────────────────────────
   1 │ 1st      Male     CHILD   No
   2 │ 2nd      Male     CHILD   No
   3 │ 3rd      Male     CHILD   No
   4 │ Crew     Male     CHILD   No
   5 │ 1st      Female   CHILD   No
   6 │ 2nd      Female   CHILD   No
   7 │ 3rd      Female   CHILD   No
   8 │ Crew     Female   CHILD   No
   9 │ 1st      Male     ADULT   No
  10 │ 2nd      Male     ADULT   No

str_starts()

Essa função responde de forma binária à pergunta: “A string começa com determinado caractere?”. No exemplo, verificamos se a coluna Age inicia com a letra C. A função retorna 1 para sim e 0 para não. De modo análogo, str_ends() verifica se a string indicada termina com o caractere especificado.

str_starts.(titanic.Age, "C")
10-element BitVector:
 1
 1
 1
 1
 1
 1
 1
 1
 0
 0

str_length()

Retorna o tamanho da string informada. No exemplo, foi utilizada a palavra “Female”, localizada na quinta linha da segunda coluna do data frame.

str_length(titanic[5,2])
6

str_c()

A função str_c() concatena um vetor de strings em uma única string. Ela comporta o argumento sep, que define o separador entre os elementos, e o argumento collapse, que agrega todas as concatenações em um único objeto.

@chain titanic begin
@mutate(ID = str_c(Ref(Class), Ref(Survived); sep = "-"))
TidierData.@select(Sex, Age, ID)
end
10×3 DataFrame
 Row │ Sex      Age      ID
     │ String7  String7  String
─────┼───────────────────────────
   1 │ Male     Child    1st-No
   2 │ Male     Child    2nd-No
   3 │ Male     Child    3rd-No
   4 │ Male     Child    Crew-No
   5 │ Female   Child    1st-No
   6 │ Female   Child    2nd-No
   7 │ Female   Child    3rd-No
   8 │ Female   Child    Crew-No
   9 │ Male     Adult    1st-No
  10 │ Male     Adult    2nd-No

No exemplo, criamos uma nova coluna (ID) que agrupa as informações de Class e Survived. Em seguida, selecionamos as colunas Sex, Age e ID, resultando em um data frame com uma coluna a menos.

A função Ref() foi utilizada para que o Julia tratasse cada coluna como um único vetor, e não uma coleção de vetores.

Referências

Este post foi elaborado a partir da documentação oficial produzida pelos autores do pacote.

Nota

Ferramentas de IA foram utilizadas para correção ortográfica e aprimoramento do texto.