Vis2020. CIDE - MPPP

Ami Gabriela Sosa Vera

Sección teórica

1. ¿Para qué sirve la librería stringr?

  • Sirve para manejar y transformar cadenas de texto.

2. ¿Qué son y para qué sirven las expresiones regulares?

  • Son secuencias de carácteres que sirven para generar patrones de búsqueda.

3. ¿Para qué sirve la librería rebus?

  • Sirve para crear expresiones regulares a través de un código más intuitivo.

4. ¿Para qué sirve la función str_view() y str_view_all()? ¿Cuál es la diferencia entre ambas?

  • La función str_view() nos permite ver el primer resultado que encuentre R que se adecue a lo que buscamos con nuestra expresión regular.
  • La función str_view_all() en cambio, nos muestra cualquier resultado que responda a la búsqueda de nuestra expresión regular.
  • Es decir, str_view_all() nos muestra todos los resultados que atrapa nuestra expresón regular, str_view() nos muestra solo el primero que encuentre R.

5. ¿Para qué sirve la función str_detect() y str_detect_all()? ¿Cuál es la diferencia entre ambas?

  • La función str_detect() nos permite detectar la presencia y ausencia de un patrón dentro de la cadena de texto.
  • No estoy muy segura de que la función str_detect_all() exista o sea muy sencilla de usar? Pero en teoría, nos permite detectar la presencia y ausencia de varios patrones al mismo tiempo dentro de la cadena de texto ya que lo hace para cada patrón dentro de los demás argumentos de la función.
  • Es decir, str_detect_all() detecta todos los patrones que establezcamos en nuestros arguemntos, str_detect() nos ayuda a detectar solamente un patrón.

6. ¿Para qué sirve la función str_replace() y str_replace_all()? ¿Cuál es la diferencia entre ambas?

  • La función str_replace() reemplaza un patrón dentro de la cadena de texto.
  • La función str_replace_all() en cambio, reemplaza todos los patrones que encuentre dentro de la cadena de texto.
  • Es decir, str_replace_all() reemplaza todos los patrones dentro de la cadena de texto, str_replace() reemplaza solo el primero que encuentre R.

7. ¿Para qué sirve la función str_remove() y str_remove_all()? ¿Cuál es la diferencia entre ambas?

  • La función str_remove() elimina la primera ocurrencia del patrón indicado de la cadena de texto.
  • La función str_remove_all() en cambio, elimina todas las ocurrencias del patrón indicado de la cadena de texto.
  • Es decir, str_remove_all() elimina el patrón todas las veces que R lo encuentre, str_remove() elimina el primer resultado de la búsqueda del patrón.

8. ¿Para qué sirve la función str_extract() y str_extract_all()? ¿Cuál es la diferencia entre ambas?

  • La función str_extract() extrae patrones de una cadena de texto en un vector.
  • La función str_extract_all() en cambio, extrae cada patrón en un vector diferente. Es decir, crea un vector para cada resultado del patrón.
  • Es decir, str_extract_all() extrae patrones de una cadena de texto en un vector, str_extract() hace lo mismo pero almacena cada resultado de la búsqueda en un vector individual.

Sección práctica

0. Estas son las librerías que utilizaremos en la sección práctica. Cárgalas o instálalas en caso de que no las tengas instaladas en tu computadora.

# Librerias ----
library(pdftools) # Si no tienes esta libreria, instálala.
library(tidyverse)
library(rebus)
library(htmltools)

1. Dados los siguientes números de teléfono guardados en números, limpie los datos de tal forma que todos los números tengan el mismo formato. Para esto, utilice expresiones regulares y funciones de stringr.

Sugerencia: El formato puede ser el que usted defina, pero el más fácil es que sean solo los números, sin símbolos raros
numeros <- c("(595)107-3344",
             "(890)-123-4465",
             "999 107 5243",
             "999_989-0756")
Respuesta
pat <- or1(c(PUNCT, SPC)) 
numeros <- str_remove_all(numeros,  
             pattern = pat)

2. Lea el siguiente pdf en R y quédese con la escena de la hoja 135:

roma <- pdf_text("https://deadline.com/wp-content/uploads/2018/12/Roma-Screenplay-SPANISH.pdf")

roma_escena <- roma[135]
roma_escena
## [1] "               mm/dd/yy (White)                      133.\nCONTINUED: (6)\nLa Señora Sofía la abraza con fuerza -\n                        SEÑORA SOFÍA\n          Gracias… gracias… gracias, Cleo…\nPero Cleo no para de llorar -\n                        CLEO\n          No la quería… No la quería…\nLa Señora Sofía intenta calmarla -\n                        SEÑORA SOFÍA\n          Shh, shh, shh… Están bien… Los\n          niños están bien…\nPero Cleo insiste entre llanto y mocos -\n                        CLEO\n          No la quería… No quería que\n          naciera…\nY se quiebra aún más -\n                        CLEO (CONT’D)\n          … ¡Pobrecita!… ¡No quería que\n          naciera!… ¡No quería que naciera!…\nLa Señora Sofía la abraza más fuerte y también llora -\n                        SEÑORA SOFÍA\n          Todo va a estar bien, Cleo… Todo\n          va a estar bien…\nLas dos mujeres lloran abrazadas. Es un llanto\ncompartido, con sollozos como arcadas, y largos silencios\nque explotan en prolongadas vocales.\nLos niños se enlazan alrededor de las mujeres,\nabrazándolas. Sólo Toño los mira de pie.\nLos curiosos se disipan. El jinete jala la riendas y el\ncaballo sigue su camino por la playa.\nEl mar enfurecido con sus inquietas olas refleja los\núltimos destellos del día.\n28 de junio de 1971, lunes\n"

Ahora:

a) Genere una expresión regular que capture todos los quiebres de página en el objeto roma_escena.

pat <- "\\n"
str_view_all(roma_escena, pattern = pat)

b) Con la expresión de (a) y la función adecuada de stringr sustituya todos los quiebres de página de roma_escena por espacios en blanco.

pat <- "\\n"
roma_escena <- str_replace_all(roma_escena, 
                                 pattern = pat, 
                                 replacement = " ")
roma_escena
## [1] "               mm/dd/yy (White)                      133. CONTINUED: (6) La Señora Sofía la abraza con fuerza -                         SEÑORA SOFÍA           Gracias… gracias… gracias, Cleo… Pero Cleo no para de llorar -                         CLEO           No la quería… No la quería… La Señora Sofía intenta calmarla -                         SEÑORA SOFÍA           Shh, shh, shh… Están bien… Los           niños están bien… Pero Cleo insiste entre llanto y mocos -                         CLEO           No la quería… No quería que           naciera… Y se quiebra aún más -                         CLEO (CONT’D)           … ¡Pobrecita!… ¡No quería que           naciera!… ¡No quería que naciera!… La Señora Sofía la abraza más fuerte y también llora -                         SEÑORA SOFÍA           Todo va a estar bien, Cleo… Todo           va a estar bien… Las dos mujeres lloran abrazadas. Es un llanto compartido, con sollozos como arcadas, y largos silencios que explotan en prolongadas vocales. Los niños se enlazan alrededor de las mujeres, abrazándolas. Sólo Toño los mira de pie. Los curiosos se disipan. El jinete jala la riendas y el caballo sigue su camino por la playa. El mar enfurecido con sus inquietas olas refleja los últimos destellos del día. 28 de junio de 1971, lunes "

c) El objeto roma_escena tiene espacios anormalmente grandes. Genere una expresión regular que capture todos los espacios más grandes de lo normal (más de un espacio normal).

pat <-  SPC %R% one_or_more(SPC) 
str_view_all(roma_escena, pattern = pat)

d) Con la expresión de (c) y la función adecuada de stringr, sustituya todos los espacios anormalmente grandes de roma_escena por espacios normales.

pat <-  SPC %R% one_or_more(SPC) 
roma_escena <- str_replace_all(roma_escena, 
                               pattern = pat, 
                               replacement = " ")
roma_escena
## [1] " mm/dd/yy (White) 133. CONTINUED: (6) La Señora Sofía la abraza con fuerza - SEÑORA SOFÍA Gracias… gracias… gracias, Cleo… Pero Cleo no para de llorar - CLEO No la quería… No la quería… La Señora Sofía intenta calmarla - SEÑORA SOFÍA Shh, shh, shh… Están bien… Los niños están bien… Pero Cleo insiste entre llanto y mocos - CLEO No la quería… No quería que naciera… Y se quiebra aún más - CLEO (CONT’D) … ¡Pobrecita!… ¡No quería que naciera!… ¡No quería que naciera!… La Señora Sofía la abraza más fuerte y también llora - SEÑORA SOFÍA Todo va a estar bien, Cleo… Todo va a estar bien… Las dos mujeres lloran abrazadas. Es un llanto compartido, con sollozos como arcadas, y largos silencios que explotan en prolongadas vocales. Los niños se enlazan alrededor de las mujeres, abrazándolas. Sólo Toño los mira de pie. Los curiosos se disipan. El jinete jala la riendas y el caballo sigue su camino por la playa. El mar enfurecido con sus inquietas olas refleja los últimos destellos del día. 28 de junio de 1971, lunes "

e) Utilizando stringr y la expresión regular adecuada, elimine las siguientes frases:

  • “mm/dd/yy (White) 133. CONTINUED: (6)”
pat <- "mm/dd/yy " %R% "\\(" %R% one_or_more(WRD) %R% "\\)" %R% SPC %R% "133. " %R% "CONTINUED: " %R% "\\(" %R% DGT %R% "\\)" %R% SPC
roma_escena <- str_remove_all(roma_escena, pat)
roma_escena
## [1] " La Señora Sofía la abraza con fuerza - SEÑORA SOFÍA Gracias… gracias… gracias, Cleo… Pero Cleo no para de llorar - CLEO No la quería… No la quería… La Señora Sofía intenta calmarla - SEÑORA SOFÍA Shh, shh, shh… Están bien… Los niños están bien… Pero Cleo insiste entre llanto y mocos - CLEO No la quería… No quería que naciera… Y se quiebra aún más - CLEO (CONT’D) … ¡Pobrecita!… ¡No quería que naciera!… ¡No quería que naciera!… La Señora Sofía la abraza más fuerte y también llora - SEÑORA SOFÍA Todo va a estar bien, Cleo… Todo va a estar bien… Las dos mujeres lloran abrazadas. Es un llanto compartido, con sollozos como arcadas, y largos silencios que explotan en prolongadas vocales. Los niños se enlazan alrededor de las mujeres, abrazándolas. Sólo Toño los mira de pie. Los curiosos se disipan. El jinete jala la riendas y el caballo sigue su camino por la playa. El mar enfurecido con sus inquietas olas refleja los últimos destellos del día. 28 de junio de 1971, lunes "
  • “28 de junio de 1971, lunes”
pat <- "28" %R% SPC %R% "de" %R% SPC %R% one_or_more(WRD) %R% SPC %R% "de" %R% SPC %R% one_or_more(DGT) %R% PUNCT %R% SPC %R% one_or_more(WRD) 
roma_escena <- str_remove_all(roma_escena, pat)
roma_escena
## [1] " La Señora Sofía la abraza con fuerza - SEÑORA SOFÍA Gracias… gracias… gracias, Cleo… Pero Cleo no para de llorar - CLEO No la quería… No la quería… La Señora Sofía intenta calmarla - SEÑORA SOFÍA Shh, shh, shh… Están bien… Los niños están bien… Pero Cleo insiste entre llanto y mocos - CLEO No la quería… No quería que naciera… Y se quiebra aún más - CLEO (CONT’D) … ¡Pobrecita!… ¡No quería que naciera!… ¡No quería que naciera!… La Señora Sofía la abraza más fuerte y también llora - SEÑORA SOFÍA Todo va a estar bien, Cleo… Todo va a estar bien… Las dos mujeres lloran abrazadas. Es un llanto compartido, con sollozos como arcadas, y largos silencios que explotan en prolongadas vocales. Los niños se enlazan alrededor de las mujeres, abrazándolas. Sólo Toño los mira de pie. Los curiosos se disipan. El jinete jala la riendas y el caballo sigue su camino por la playa. El mar enfurecido con sus inquietas olas refleja los últimos destellos del día.  "

f) Genere una expresión regular que capture solamente las palabras que estan completamente en mayúsculas.

pat <- UPPER %R% one_or_more(UPPER) %R% optional(PUNCT) %R% optional(UPPER)
str_view_all(roma_escena, pat)

Muchas gracias por leer