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?

Para detectar cadenas de texto dentro de documentos, vectores o bases de datos.

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

Las expresiones regulares están constituidas por una serie de caracteres (lo que incluye los espacios y caracteres especiales, así como números) para definir un patrón de búsqueda. Sirven para localizarlas y extraer palabras, frases, fechas, etc., o bien para detectarlas y deshacernos de ellas.

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

Para poder manejar fácilmente las expresiones regulares a través de funciones y objetos, y no tener que trabajar necesáriamente con lenguaje complicado.

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

str_view() sirve para marcar la primera serie de caracteres de la expresión regular y ver si vamos bien en el proceso de identificación de la cadena de texto. str_view_all() sirve para marcar todos los caracteres de la expresión regular y calar si vamos bien en nuestra identificación en todos los casos. La diferencia radica en ver la marcada solo la primera parte o toda la expresión regular.

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

str_detect() sirve para detectar la primera coincidencia de una cadena de texto que incluyen un patrón. str_detect_all() sirve para detectar las coincidencias de una cadena de texto que incluyen un patrón. Su diferencia radica en ver el número de caracteres que detectamos y resaltamos.

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

str_replace() reemplaza un caracter en la primera coincidencia de una cadena de texto str_replace_all() sirve para reemplazar con un caracter en todas las coincidencias de la cadena de texto que contenga ese patrón. Su diferencia radica en ver el número de caracteres que reemplazamos.

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

str_remove() sirve para remover (quitar) patrones que coinciden en una cadena de texto. En este caso la primera coincidencia. tr_remove_all() sirve para remover (quitar) patrones que coinciden en una cadena de texto. Su diferencia radica en ver el número de caracteres que removemos

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

str_extract() sirve para extraer la primera coincidencia de una cadena de texto, marcada en una función. str_extract_all() sirve para extraer las coincidencias de una cadena de texto, marcada en una función. Su diferencia radica en ver el número de caracteres que extraemos.

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")

# Aqui coloque su respuesta ----

pat <- or1(c(PUNCT, SPC))
str_view_all(numeros,
             pattern = pat)
numeros <- str_replace_all(numeros, 
                             pattern = pat, 
                             replacement = " ")

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.

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

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.

patquiebre <- "\n"
str_view_all(roma_escena,
             pattern = patquiebre)
roma_escenaB <- str_replace_all(roma_escena, 
                           pattern = patquiebre, 
                           replacement = " ")

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).

patEspacio <- SPC %R% one_or_more(SPC)
str_view_all(roma_escenaB,
             pattern = patEspacio)

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.

roma_escenaC <- str_replace_all(roma_escenaB, 
                                pattern = patEspacio, 
                                replacement = " ")
str_view_all(roma_escenaC,
             pattern = patEspacio)

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

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

EliminarFrase1 <- SPC %R% one_or_more(WRD) %R% PUNCT %R% one_or_more(WRD) %R% PUNCT %R% one_or_more(WRD) %R% SPC %R% PUNCT %R% one_or_more(WRD) %R% PUNCT %R% SPC %R% one_or_more(DGT) %R% PUNCT %R% SPC %R% one_or_more(WRD) %R% PUNCT %R% SPC %R% PUNCT %R% DGT %R% PUNCT %R% SPC
str_view_all(roma_escenaC,
             pattern = EliminarFrase1)
roma_escenaC <- str_remove_all(roma_escenaC, 
                                pattern = EliminarFrase1)

* "28 de junio de 1971, lunes"

EliminarFrase2 <- SPC %R% one_or_more(DGT) %R% SPC %R% one_or_more(WRD) %R% SPC %R% one_or_more(WRD) %R% SPC %R% one_or_more(WRD) %R% SPC %R%one_or_more(DGT) %R% PUNCT %R% SPC %R% one_or_more(WRD)
str_view_all(roma_escenaC,
             pattern = EliminarFrase2)
roma_escenaC <- str_remove_all(roma_escenaC, 
                               pattern = EliminarFrase2)

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

mayusculas <- one_or_more(UPPER) %R% one_or_more(UPPER)
str_view_all(roma_escenaC, pattern = mayusculas)