Extraer dígitos y el siguiente string de un vector de caracteres en R.
Estoy intentando resolver un problema. Tengo un vector de texto y me gustaría extraer los números de él y el siguiente carácter (incluyendo el espacio). Estoy usando el paquete stringr
para R, pero no puedo encontrar una solución adecuada para mi problema. Agradecería su ayuda/comentarios.
library(tidyverse)
library(stringr)
my_text <- "Este es mi vector de ejemplo. Tengo 15 naranjas en el refrigerador, 12 manzanas en la habitación, 1 madre en mi familia, 1 padre en mi familia, 12 hermanos que viven en 3 continentes, y 45 cosasaleatoriasenmicasa que no uso"
Me gustaría obtener la siguiente información de mi_text
“15 naranjas” “12 manzanas” “1 madre” “1 padre” “12 hermanos” “45 cosasaleatoriasenmicasa”
He intentado usar str_extract_all(my_text, "\\\d+")
pero obviamente eso solo captura los dígitos.
str_extract_all(my_text, "\d+")
“15” “12” “1” “1” “12” “45”
He intentado usar diferentes patrones de regex en la página de ayuda del paquete stringr
(https://stringr.tidyverse.org/articles/regular-expressions.html) pero no puedo encontrar uno que funcione para mi problema. Además, el texto después de los números puede ser aleatorio: en lugar de manzanas y naranjas puedo tener pollos, casas, etc. ¿Alguna sugerencia sobre cómo debería abordar este problema?
Muchas gracias.
davy.ai
Una solución es utilizar la función
str_extract
con un patrón de expresión regular que coincida con uno o más dígitos (\\d+
) seguidos de uno o más espacios (\\s+
) y uno o más caracteres que no sean dígitos o espacios en blanco (\\S+
). Este patrón coincidirá con los números y el siguiente carácter (incluido el espacio) después de él.“`{r}
results <- str_extract_all(my_text, “\d+\s+\S+”)
results
Si desea eliminar el “that” al final del último resultado, puede utilizar
str_replace
para reemplazarlo con una cadena vacía:“`{r}
results[length(results)] <- str_replace(results[length(results)], ” that”, “”)
results
¡Espero que esto sea de ayuda!