library(tidyverse)Introducció a les expressions regulars amb StringR
La llibreria StringR
StringR és una llibreria que forma part de l’entorn Tidyverse i està especialitzada en el tractament i anàlisi de textos.
En aquesta classe ens dedicarem a veure les funcions que conté la llibreria i quines facilitats ens proporcionen a l’hora de tractar amb textos.
El concepte ‘string’
En programació s’anomena ‘string’ als elements de text. És el que traduït nosaltres anomenem ‘cadena de caràcters’. En anglès també significa ‘corda’.
A R els ‘strings’ sempre van entre cometes i es cataloguen dins la classe character.
string <- "una string"
strings_variable <- c("Podem convertir", "diferents strings", "en files d'una variable.")
strings_variable[1] "Podem convertir" "diferents strings"
[3] "en files d'una variable."
paste("També podem", "enganxar", string, "amb una altra.")[1] "També podem enganxar una string amb una altra."
Funcions de stringR
1. Manipulació bàsica de textos
str_length(): Retorna la longitud en caràcters d’una string.
str_length("Aquí hi ha 24 caràcters.") # Noteu que també es compten com a caràcters els espais.[1] 24
str_sub(): extreu o substitueix elements de la cadena de text.
str_sub("Aquí hi ha 24 caràcters.", start = 12, end = 13) [1] "24"
str_sub("Aquí hi ha 24 caràcters.", start = -10) [1] "caràcters."
substitucio <- "Aquí hi ha 24 caràcters."
str_sub(substitucio, 12, 13) <- "100"
substitucio[1] "Aquí hi ha 100 caràcters."
str_to_upper()istr_to_lower(): canvien tot el text a majúscules o a minúscules.
str_to_upper("això són minúscules")[1] "AIXÒ SÓN MINÚSCULES"
str_to_lower("AIXÒ SÓN MAJÚSCULES")[1] "això són majúscules"
str_c(): Enllaça cadenes en una sola. Similar a la funciópaste().
str_c("També podem", "enganxar", "una string", "amb una altra.", sep = " ")[1] "També podem enganxar una string amb una altra."
str_c("També podem", "enganxar", "una string", "amb una altra.", sep = "/")[1] "També podem/enganxar/una string/amb una altra."
str_c("També podem", "enganxar", "una string", "amb una altra.", sep = "+")[1] "També podem+enganxar+una string+amb una altra."
2. Detecció de patrons
str_detect(): Detecta si un patró apareix en una cadena de text. Retorna TRUE o FALSE.
str_detect("Això és una string.", "string")[1] TRUE
str_detect("Això és un número.", "string")[1] FALSE
str_which(): Retorna la posició en la que apareix el patró que busquem dins d’un vector/variable.
posicions <- c("Això és una string.", "Això és un número.")
str_which(posicions, "string")[1] 1
str_count(): Retorna el nombre de vegades que apareix el patró en una string.
str_count("Això és una string, però allò altre no és una string.", "string")[1] 2
str_count("Això és una string, però allò altre no és una string.", "a") ## Vigileu amb les majúscules![1] 4
recompte <- c("Això és una string, però allò altre no és una string.", "Vols dir que allò no és una string?")
str_count(recompte, "string")[1] 2 1
3. Extracció de text
str_extract(): Extreu del text la primera coincidència del patró que necessitem.
str_extract("abc123def456", "\\d+") # Extreu els primers dígits (números) de la cadena de text.[1] "123"
str_extract_all(): Extreu del text totes les coincidències del patró que necessitem.
str_extract_all("abc123def456", "\\d+") # Extreu TOTS dígits (números) de la cadena de text.[[1]]
[1] "123" "456"
4. Divisió de textos
str_split(): Divideix una cadena de text segons un delimitador (una coma, un espai en blanc…).
str_split("Hola, com estàs?", ",")[[1]]
[1] "Hola" " com estàs?"
str_split("Hola, com estàs?", " ")[[1]]
[1] "Hola," "com" "estàs?"
str_split("Hola, com estàs?", "e")[[1]]
[1] "Hola, com " "stàs?"
str_trim(): Elimina espais en blanc a l’inici i al final de la cadena de text.
str_trim(" Hola, com estàs? ")[1] "Hola, com estàs?"
str_squish(): Elimina tots els espais “no convencionals” de la cadena de text.
str_squish(" Hola, com estàs? ")[1] "Hola, com estàs?"
str_squish(" Hola, com estàs? ")[1] "Hola, com estàs?"
str_squish(" Hola, com estàs? ")[1] "Hola, com estàs?"
5. Ordenar les cadenes de text
str_sort(): Ordena els textos de dins d’un vector alfabèticament.
str_sort(c("b", "a", "c"))[1] "a" "b" "c"
str_order(): Retorna un vector amb la posició en la que hauria d’anar cada element del vector si estiguéssin ordenats alfabèticament.
str_order(c("b", "a", "c"))[1] 2 1 3