La presente tarea tiene una sección teórica y una sección práctica.

La entrega se realizará a través de un documento de RMarkdown publicado en RPUbs (se entregará el enlace en un correo a mi con copia a la laboratorista).

En caso de algún error en el código de la tarea, publique el error en Piazza o contacte a su instructor para ver como proceder.

Aquellos que no han podido publicar sus tareas antes pueden entregar la tarea de la misma manera en que lo han estado haciendo antes.

Sección teórica.

1. ¿Para que sirve la libreria stringr?

#Brinda un conjunto de funciones consistentes para manejar y transformar cadenas de texto

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

#Son secuencias de caracteres para definir un patrón de búsqueda

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

#Nos da la facilidad de construir expresiones regulares de manera más intuitiva, mientras vamos aprendiendo a trabajar con las expresiones regulares tradicionales.

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

#Ambas permiten probar nuestros intentos de expresiones regulares, para atrapar lo que queremos atrapar. La diferencia entre ambas es que str_view muestra el primer patrón, mientras que str_view_all muestra todos los patrones.

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

#str_detect detecta la presencia o ausencia strings que incluyen un patrón y en este caso detecta el primer patrón. str_detect_all detecta todos los strings que incluyen un patrón.

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

#str_replace reemplaza patrones de cadenas de texto, en este caso reemplaza la primera que detecta. str_replace_all reemplaza todas los patrones de cadenas de texto.

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

#sirve para eliminar patrones coincidentes en una cadena de texto, en este caso elimina el primero, por lo que str_remove_all remueve todos esos patrones.

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

#para extraer patrones de cadena de texto, en este caso extrae el primero que encuentra, por lo que el str_extract_all extrae todos los que encuentra en la cadena de texto.

Sección práctica.

0. Estas son las librerías que utilizaremos en la sección práctica. Cárgalas o instalalas 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 numeros de telefono guardados en numeros, limpie los datos de tal forma que todos los numeros tengan el mismo formato. Para esto, utilice expresiones regulares y funciones de stringr.

(Sugerencia: El formato puede ser el que usted defina, pero el mas facil es que sean solo los numeros, sin símbolos raros).

numeros <- c("(595)107-3344",
             "(890)-123-4465",
             "999 107 5243",
             "999_989-0756")

pat <- or1(c(PUNCT, SPC))

str_view_all(string = numeros,
             pattern = pat)
str_remove_all(string = numeros,
               pattern = pat)
## [1] "5951073344" "8901234465" "9991075243" "9999890756"

2. Lea el siguiente pdf en R…

roma <- pdf_text("Roma-Screenplay-SPANISH.pdf")

…y quédese con la escena de la hoja 135:

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 (\n) en el objeto roma_escena.

pat <- "`n`"

str_view_all(string = 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.

str_replace_all(string = roma_escena,
                pattern = pat,
                replacement = " ")
## [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"

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

pat <- repeated(SPC, lo = 2, hi = Inf)

str_view_all(string = 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.

str_replace_all(string = roma_escena,
                pattern = pat,
                replacement = " ")
## [1] " mm/dd/yy (White) 133.\nCONTINUED: (6)\nLa Señora Sofía la abraza con fuerza - SEÑORA SOFÍA Gracias… gracias… gracias, Cleo…\nPero Cleo no para de llorar - CLEO No la quería… No la quería…\nLa Señora Sofía intenta calmarla - SEÑORA SOFÍA Shh, shh, shh… Están bien… Los niños están bien…\nPero Cleo insiste entre llanto y mocos - CLEO No la quería… No quería que naciera…\nY se quiebra aún más - CLEO (CONT’D) … ¡Pobrecita!… ¡No quería que naciera!… ¡No quería que naciera!…\nLa 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…\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"

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

* "mm/dd/yy (White) 133. CONTINUED: (6) " y…

pat <- "mm/dd/yy \\(White\\)                      133.\nCONTINUED: \\(6\\)"

str_view_all(string = roma_escena,
             pattern = pat)
str_remove(string = roma_escena,
             pattern = pat)
## [1] "               \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"
str_view_all(string = roma_escena,
             pattern = pat)

* "28 de junio de 1971, lunes"

pat <- "28 de junio de 1971, lunes"

str_view_all(string = roma_escena,
             pattern = pat)
str_remove(string = roma_escena,
           pattern = pat)
## [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.\n\n"
str_view_all(string = roma_escena,
             pattern = pat)

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

pat <- repeated(x= UPPER, lo = 2, hi = Inf) 

str_view_all(string = roma_escena,
             pattern = pat)