1 Importar datos en R

Hasta el momento solamente hemos visto como importar archivos .csv en R, desde un ambiente local.Para esta clase vamos a recorrer como importar en R otro tipo de archivos y además como leerlos directamente desde una página web por ejemplo.

1.1 Archivos .txt

Con la función read.table() se puede fácilmente leer archivos de extensión .txt.En el siguiente ejemplo veremos como leer este tipo de archivo desde una dirección web:

##   V1 V2 V3
## 1  1  6  a
## 2  2  7  b
## 3  3  8  c
## 4  4  9  d
## 5  5 10  e

Idealmente, en el argumento file, se debe pasar solamente el nombre y la extensión del archivo, ya que el working directory ya se debería haber configurado previamente.Al usar esta función, por defecto el objeto se convierte en un dataframe.

1.2 Lectura de .csv

Si un archivo de texto esta separado por “,” o “;”, usualmente se lee como un archivo de extensión .csv.Para esto se utiliza la función read.csv :

##   Col1 Col2 Col3
## 1    1    2    3
## 2    4    5    6
## 3    7    8    9
## 4    a    b    c

1.3 Lectura de un archivo delimitado por otro caracter

Si el archivo de texto está separado por otro caracter que no sea tab, “,” o “;”, existe la función read.delim() como variante a read.table()

##   Col1 Col2 Col3
## 1    1    2    3
## 2    4    5    6
## 3    7    8    9
## 4    a    b    c

1.4 Importar y leer datos de excel

Para los ex amantes de excel, R también provee una forma sencilla y flexible de leer datos en este formato.Para esto vamos a utilizar el paquete readxl para facilitar la manipulación:

## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:kableExtra':
## 
##     group_rows
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## New names:
## * `` -> ...15
## * `` -> ...16
## # A tibble: 6 x 16
##   `Año` Institucion    Cod `Tipo de proced… `Actualizado al`
##    <dbl> <chr>        <dbl> <chr>            <chr>           
## 1   2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 2   2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 3   2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 4   2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 5   2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 6   2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## # … with 11 more variables: `No de procedimiento` <chr>, `Objeto
## #   contractual` <chr>, `Apertura del concurso` <dttm>, `Adjudicacion mas
## #   reciente` <chr>, `Monto adjudicado en colones al año 2017` <chr>,
## #   `Monto adjudicado en colones al corte(*)` <chr>, `Monto
## #   presupuestado` <chr>, Estado <chr>, `ultima modificación` <dttm>,
## #   ...15 <lgl>, ...16 <dbl>

Este paquete a su vez permite realizar algunas otras acciones de manipulación de archivos de excel:

## # A tibble: 150 x 5
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
##           <dbl>       <dbl>        <dbl>       <dbl> <chr>  
##  1          5.1         3.5          1.4         0.2 setosa 
##  2          4.9         3            1.4         0.2 setosa 
##  3          4.7         3.2          1.3         0.2 setosa 
##  4          4.6         3.1          1.5         0.2 setosa 
##  5          5           3.6          1.4         0.2 setosa 
##  6          5.4         3.9          1.7         0.4 setosa 
##  7          4.6         3.4          1.4         0.3 setosa 
##  8          5           3.4          1.5         0.2 setosa 
##  9          4.4         2.9          1.4         0.2 setosa 
## 10          4.9         3.1          1.5         0.1 setosa 
## # … with 140 more rows
## [1] "iris"     "mtcars"   "chickwts" "quakes"
## # A tibble: 71 x 2
##    weight feed     
##     <dbl> <chr>    
##  1    179 horsebean
##  2    160 horsebean
##  3    136 horsebean
##  4    227 horsebean
##  5    217 horsebean
##  6    168 horsebean
##  7    108 horsebean
##  8    124 horsebean
##  9    143 horsebean
## 10    140 horsebean
## # … with 61 more rows
## # A tibble: 1,000 x 5
##      lat  long depth   mag stations
##    <dbl> <dbl> <dbl> <dbl>    <dbl>
##  1 -20.4  182.   562   4.8       41
##  2 -20.6  181.   650   4.2       15
##  3 -26    184.    42   5.4       43
##  4 -18.0  182.   626   4.1       19
##  5 -20.4  182.   649   4         11
##  6 -19.7  184.   195   4         12
##  7 -11.7  166.    82   4.8       43
##  8 -28.1  182.   194   4.4       15
##  9 -28.7  182.   211   4.7       35
## 10 -17.5  180.   622   4.3       19
## # … with 990 more rows
## # A tibble: 3 x 3
##   Petal.Length Petal.Width Species
##          <dbl>       <dbl> <chr>  
## 1          1.4         0.2 setosa 
## 2          1.4         0.2 setosa 
## 3          1.3         0.2 setosa
## # A tibble: 3 x 5
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
##          <dbl>       <dbl>        <dbl>       <dbl> <chr>  
## 1          5.1         3.5          1.4         0.2 setosa 
## 2          4.9         3            1.4         0.2 setosa 
## 3          4.7         3.2          1.3         0.2 setosa
## # A tibble: 150 x 3
##    Sepal.Width Petal.Length Petal.Width
##          <dbl>        <dbl>       <dbl>
##  1         3.5          1.4         0.2
##  2         3            1.4         0.2
##  3         3.2          1.3         0.2
##  4         3.1          1.5         0.2
##  5         3.6          1.4         0.2
##  6         3.9          1.7         0.4
##  7         3.4          1.4         0.3
##  8         3.4          1.5         0.2
##  9         2.9          1.4         0.2
## 10         3.1          1.5         0.1
## # … with 140 more rows
## # A tibble: 4 x 3
##     cyl  disp    hp
##   <dbl> <dbl> <dbl>
## 1     6   160   110
## 2     6   160   110
## 3     4   108    93
## 4     6   258   110
## # A tibble: 150 x 5
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
##           <dbl>       <dbl>        <dbl>       <dbl> <chr>  
##  1          5.1         3.5          1.4         0.2 <NA>   
##  2          4.9         3            1.4         0.2 <NA>   
##  3          4.7         3.2          1.3         0.2 <NA>   
##  4          4.6         3.1          1.5         0.2 <NA>   
##  5          5           3.6          1.4         0.2 <NA>   
##  6          5.4         3.9          1.7         0.4 <NA>   
##  7          4.6         3.4          1.4         0.3 <NA>   
##  8          5           3.4          1.5         0.2 <NA>   
##  9          4.4         2.9          1.4         0.2 <NA>   
## 10          4.9         3.1          1.5         0.1 <NA>   
## # … with 140 more rows

1.5 Lectura de otros tipos de archivos

A continuación se brinda una guía para la lectura de otro tipo de archivos:

Tipo de archivo Paquete Descripción
JSON rjson JsonData <- fromJSON(file= "<filename.json>" )
xml XML xmlfile <- xmlTreeParse("<Your URL to the XML data>")
html RCurl y XML urldata <- getURL(url)data <- readHTMLTable(urldata,stringsAsFactors = FALSE)
SAS,SPSS,etc foreign mySPSSData <- read.spss("example.sav")

2 Manipulación de Strings en R

En el análisis de datos, una herramienta esencial y una habilidad muy favorable es el correcto manejo de datos de texto para el procesamiento y sintesis de los datos.

Para esto, vamos a utilizar como base el paquete stringr que contiene muchas funciones para facilitar el trabajo con string o datos textuales.Es importante mencionar que el R base contiene muchas de las funciones que cumplen objetivos similares a las que se pueden ejecutar con este paquete, pero se hará énfasis en la funciones del paquete para mantener la estandarización.

Además, vamos a utilizar el dataset de registro de tumores de la CCSS:

CODIGOCASO NOMBREESTABLECIMIENTO SEXO PROVINCIA CANTON DISTRITO DESC2 LATERALIDAD BASEDIAGNOSTICO
261659 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO SAN JOSE SAN JOSE SAN SEBASTIAN TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA CITOLOGIA O HEMATOLOGIA
262504 HOSPITAL MONSENOR SANABRIA FEMENINO PUNTARENAS PUNTARENAS MANZANILLO TUMOR MALIGNO DE LA UNION RECTOSIGMOIDEA NO_APLICA HISTOLOGIA
267637 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE ASERRI ASERRI TUMOR MALIGNO DEL GANGLIO LINFATICO, SITIO NO ESPECIFICADO NO_APLICA HISTOLOGIA
264715 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO LIMON POCOCI GUAPILES TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA SOLAMENTE CLINICA
265213 HOSPITAL SAN CARLOS MASCULINO ALAJUELA SAN CARLOS QUESADA TUMOR MALIGNO DE PIEL DEL LABIO NO_APLICA HISTOLOGIA
262350 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE SAN JOSE PAVAS TUMOR MALIGNO DEL ENDOMETRIO NO_APLICA HISTOLOGIA
270652 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA FEMENINO LIMON GUACIMO GUACIMO TUMOR MALIGNO DE LA PIEL DE LA OREJA Y DEL CONDUCTO AUDITIVO EXTERNO NO_APLICA SOLAMENTE CLINICA
263369 HOSPITAL MEXICO MASCULINO SAN JOSE SAN JOSE URUCA TUMOR MALIGNO DE LA PIEL DE OTRAS PARTES Y DE LAS NO ESPECIFICADAS DE LA CARA NO_APLICA HISTOLOGIA
268107 HOSPITAL GUAPILES FEMENINO LIMON POCOCI GUAPILES TUMOR MALIGNO DEL ENDOCERVIX NO_APLICA HISTOLOGIA
264759 HOSPITAL DR. WILLIAM ALLEN MASCULINO CARTAGO TURRIALBA LA SUIZA TUMOR MALIGNO DE LA GLANDULA TIROIDES NO_APLICA HISTOLOGIA

2.1 Concatenación de strings

Vamos a repasar la funcionalidad de paste´y paste0.Estas funciones sirven en esencia para concatenar varios strings.La sintaxis básica es como sigue:

paste(..., sep = " ", collapse = NULL)

  • ... representa cualquier número de strings o vectores a ser combinados.

  • sep representa el caracter de separación entre elementos y es opcional.

  • collapse es usado para eliminar el espacio entre dos strings.

CODIGOCASO NOMBREESTABLECIMIENTO SEXO PROVINCIA CANTON DISTRITO DESC2 LATERALIDAD BASEDIAGNOSTICO locacion locacion2
261659 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO SAN JOSE SAN JOSE SAN SEBASTIAN TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA CITOLOGIA O HEMATOLOGIA SAN JOSE-SAN JOSE SAN JOSE- SAN SEBASTIAN
262504 HOSPITAL MONSENOR SANABRIA FEMENINO PUNTARENAS PUNTARENAS MANZANILLO TUMOR MALIGNO DE LA UNION RECTOSIGMOIDEA NO_APLICA HISTOLOGIA PUNTARENAS-PUNTARENAS PUNTARENAS- MANZANILLO
267637 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE ASERRI ASERRI TUMOR MALIGNO DEL GANGLIO LINFATICO, SITIO NO ESPECIFICADO NO_APLICA HISTOLOGIA SAN JOSE-ASERRI ASERRI- ASERRI
264715 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO LIMON POCOCI GUAPILES TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA SOLAMENTE CLINICA LIMON-POCOCI POCOCI- GUAPILES
265213 HOSPITAL SAN CARLOS MASCULINO ALAJUELA SAN CARLOS QUESADA TUMOR MALIGNO DE PIEL DEL LABIO NO_APLICA HISTOLOGIA ALAJUELA-SAN CARLOS SAN CARLOS- QUESADA
262350 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE SAN JOSE PAVAS TUMOR MALIGNO DEL ENDOMETRIO NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- PAVAS
270652 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA FEMENINO LIMON GUACIMO GUACIMO TUMOR MALIGNO DE LA PIEL DE LA OREJA Y DEL CONDUCTO AUDITIVO EXTERNO NO_APLICA SOLAMENTE CLINICA LIMON-GUACIMO GUACIMO- GUACIMO
263369 HOSPITAL MEXICO MASCULINO SAN JOSE SAN JOSE URUCA TUMOR MALIGNO DE LA PIEL DE OTRAS PARTES Y DE LAS NO ESPECIFICADAS DE LA CARA NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- URUCA
268107 HOSPITAL GUAPILES FEMENINO LIMON POCOCI GUAPILES TUMOR MALIGNO DEL ENDOCERVIX NO_APLICA HISTOLOGIA LIMON-POCOCI POCOCI- GUAPILES
264759 HOSPITAL DR. WILLIAM ALLEN MASCULINO CARTAGO TURRIALBA LA SUIZA TUMOR MALIGNO DE LA GLANDULA TIROIDES NO_APLICA HISTOLOGIA CARTAGO-TURRIALBA TURRIALBA- LA SUIZA
## [1] "Good morning Felipe."

2.2 Delimitando strings

Dentro de las funcionalidades básicas se encuentran las funciones para “recortar” ciertos strings, según patrones de inicio y finalización:

CODIGOCASO NOMBREESTABLECIMIENTO SEXO PROVINCIA CANTON DISTRITO DESC2 LATERALIDAD BASEDIAGNOSTICO locacion locacion2 raizCaso
261659 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO SAN JOSE SAN JOSE SAN SEBASTIAN TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA CITOLOGIA O HEMATOLOGIA SAN JOSE-SAN JOSE SAN JOSE- SAN SEBASTIAN 261
262504 HOSPITAL MONSENOR SANABRIA FEMENINO PUNTARENAS PUNTARENAS MANZANILLO TUMOR MALIGNO DE LA UNION RECTOSIGMOIDEA NO_APLICA HISTOLOGIA PUNTARENAS-PUNTARENAS PUNTARENAS- MANZANILLO 262
267637 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE ASERRI ASERRI TUMOR MALIGNO DEL GANGLIO LINFATICO, SITIO NO ESPECIFICADO NO_APLICA HISTOLOGIA SAN JOSE-ASERRI ASERRI- ASERRI 267
264715 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO LIMON POCOCI GUAPILES TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA SOLAMENTE CLINICA LIMON-POCOCI POCOCI- GUAPILES 264
265213 HOSPITAL SAN CARLOS MASCULINO ALAJUELA SAN CARLOS QUESADA TUMOR MALIGNO DE PIEL DEL LABIO NO_APLICA HISTOLOGIA ALAJUELA-SAN CARLOS SAN CARLOS- QUESADA 265
262350 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE SAN JOSE PAVAS TUMOR MALIGNO DEL ENDOMETRIO NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- PAVAS 262
270652 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA FEMENINO LIMON GUACIMO GUACIMO TUMOR MALIGNO DE LA PIEL DE LA OREJA Y DEL CONDUCTO AUDITIVO EXTERNO NO_APLICA SOLAMENTE CLINICA LIMON-GUACIMO GUACIMO- GUACIMO 270
263369 HOSPITAL MEXICO MASCULINO SAN JOSE SAN JOSE URUCA TUMOR MALIGNO DE LA PIEL DE OTRAS PARTES Y DE LAS NO ESPECIFICADAS DE LA CARA NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- URUCA 263
268107 HOSPITAL GUAPILES FEMENINO LIMON POCOCI GUAPILES TUMOR MALIGNO DEL ENDOCERVIX NO_APLICA HISTOLOGIA LIMON-POCOCI POCOCI- GUAPILES 268
264759 HOSPITAL DR. WILLIAM ALLEN MASCULINO CARTAGO TURRIALBA LA SUIZA TUMOR MALIGNO DE LA GLANDULA TIROIDES NO_APLICA HISTOLOGIA CARTAGO-TURRIALBA TURRIALBA- LA SUIZA 264

2.3 Convertir de mayúscula a minúscula y viceversa

CODIGOCASO NOMBREESTABLECIMIENTO SEXO PROVINCIA CANTON DISTRITO DESC2 LATERALIDAD BASEDIAGNOSTICO locacion locacion2 raizCaso sexo
261659 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO SAN JOSE SAN JOSE SAN SEBASTIAN TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA CITOLOGIA O HEMATOLOGIA SAN JOSE-SAN JOSE SAN JOSE- SAN SEBASTIAN 261 m
262504 HOSPITAL MONSENOR SANABRIA FEMENINO PUNTARENAS PUNTARENAS MANZANILLO TUMOR MALIGNO DE LA UNION RECTOSIGMOIDEA NO_APLICA HISTOLOGIA PUNTARENAS-PUNTARENAS PUNTARENAS- MANZANILLO 262 f
267637 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE ASERRI ASERRI TUMOR MALIGNO DEL GANGLIO LINFATICO, SITIO NO ESPECIFICADO NO_APLICA HISTOLOGIA SAN JOSE-ASERRI ASERRI- ASERRI 267 f
264715 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO LIMON POCOCI GUAPILES TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA SOLAMENTE CLINICA LIMON-POCOCI POCOCI- GUAPILES 264 m
265213 HOSPITAL SAN CARLOS MASCULINO ALAJUELA SAN CARLOS QUESADA TUMOR MALIGNO DE PIEL DEL LABIO NO_APLICA HISTOLOGIA ALAJUELA-SAN CARLOS SAN CARLOS- QUESADA 265 m
262350 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE SAN JOSE PAVAS TUMOR MALIGNO DEL ENDOMETRIO NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- PAVAS 262 f
270652 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA FEMENINO LIMON GUACIMO GUACIMO TUMOR MALIGNO DE LA PIEL DE LA OREJA Y DEL CONDUCTO AUDITIVO EXTERNO NO_APLICA SOLAMENTE CLINICA LIMON-GUACIMO GUACIMO- GUACIMO 270 f
263369 HOSPITAL MEXICO MASCULINO SAN JOSE SAN JOSE URUCA TUMOR MALIGNO DE LA PIEL DE OTRAS PARTES Y DE LAS NO ESPECIFICADAS DE LA CARA NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- URUCA 263 m
268107 HOSPITAL GUAPILES FEMENINO LIMON POCOCI GUAPILES TUMOR MALIGNO DEL ENDOCERVIX NO_APLICA HISTOLOGIA LIMON-POCOCI POCOCI- GUAPILES 268 f
264759 HOSPITAL DR. WILLIAM ALLEN MASCULINO CARTAGO TURRIALBA LA SUIZA TUMOR MALIGNO DE LA GLANDULA TIROIDES NO_APLICA HISTOLOGIA CARTAGO-TURRIALBA TURRIALBA- LA SUIZA 264 m

2.4 Buscando patrones

En el paquete existen tres funciones que pueden ser utilizadas para buscar patrones específicos en los datos:

  • str_detect()
  • str_replace()
  • str_count()
CODIGOCASO NOMBREESTABLECIMIENTO SEXO PROVINCIA CANTON DISTRITO DESC2 LATERALIDAD BASEDIAGNOSTICO locacion locacion2 raizCaso sexo Hospital
261659 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO SAN JOSE SAN JOSE SAN SEBASTIAN TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA CITOLOGIA O HEMATOLOGIA SAN JOSE-SAN JOSE SAN JOSE- SAN SEBASTIAN 261 m TRUE
262504 HOSPITAL MONSENOR SANABRIA FEMENINO PUNTARENAS PUNTARENAS MANZANILLO TUMOR MALIGNO DE LA UNION RECTOSIGMOIDEA NO_APLICA HISTOLOGIA PUNTARENAS-PUNTARENAS PUNTARENAS- MANZANILLO 262 f TRUE
267637 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE ASERRI ASERRI TUMOR MALIGNO DEL GANGLIO LINFATICO, SITIO NO ESPECIFICADO NO_APLICA HISTOLOGIA SAN JOSE-ASERRI ASERRI- ASERRI 267 f TRUE
264715 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO LIMON POCOCI GUAPILES TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA SOLAMENTE CLINICA LIMON-POCOCI POCOCI- GUAPILES 264 m TRUE
265213 HOSPITAL SAN CARLOS MASCULINO ALAJUELA SAN CARLOS QUESADA TUMOR MALIGNO DE PIEL DEL LABIO NO_APLICA HISTOLOGIA ALAJUELA-SAN CARLOS SAN CARLOS- QUESADA 265 m TRUE
262350 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE SAN JOSE PAVAS TUMOR MALIGNO DEL ENDOMETRIO NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- PAVAS 262 f TRUE
270652 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA FEMENINO LIMON GUACIMO GUACIMO TUMOR MALIGNO DE LA PIEL DE LA OREJA Y DEL CONDUCTO AUDITIVO EXTERNO NO_APLICA SOLAMENTE CLINICA LIMON-GUACIMO GUACIMO- GUACIMO 270 f TRUE
263369 HOSPITAL MEXICO MASCULINO SAN JOSE SAN JOSE URUCA TUMOR MALIGNO DE LA PIEL DE OTRAS PARTES Y DE LAS NO ESPECIFICADAS DE LA CARA NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- URUCA 263 m TRUE
268107 HOSPITAL GUAPILES FEMENINO LIMON POCOCI GUAPILES TUMOR MALIGNO DEL ENDOCERVIX NO_APLICA HISTOLOGIA LIMON-POCOCI POCOCI- GUAPILES 268 f TRUE
264759 HOSPITAL DR. WILLIAM ALLEN MASCULINO CARTAGO TURRIALBA LA SUIZA TUMOR MALIGNO DE LA GLANDULA TIROIDES NO_APLICA HISTOLOGIA CARTAGO-TURRIALBA TURRIALBA- LA SUIZA 264 m TRUE
CODIGOCASO NOMBREESTABLECIMIENTO SEXO PROVINCIA CANTON DISTRITO DESC2 LATERALIDAD BASEDIAGNOSTICO locacion locacion2 raizCaso sexo Hospital HOSPITALCount
261659 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO SAN JOSE SAN JOSE SAN SEBASTIAN TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA CITOLOGIA O HEMATOLOGIA SAN JOSE-SAN JOSE SAN JOSE- SAN SEBASTIAN 261 m TRUE 1
262504 HOSPITAL MONSENOR SANABRIA FEMENINO PUNTARENAS PUNTARENAS MANZANILLO TUMOR MALIGNO DE LA UNION RECTOSIGMOIDEA NO_APLICA HISTOLOGIA PUNTARENAS-PUNTARENAS PUNTARENAS- MANZANILLO 262 f TRUE 1
267637 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE ASERRI ASERRI TUMOR MALIGNO DEL GANGLIO LINFATICO, SITIO NO ESPECIFICADO NO_APLICA HISTOLOGIA SAN JOSE-ASERRI ASERRI- ASERRI 267 f TRUE 1
264715 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO LIMON POCOCI GUAPILES TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA SOLAMENTE CLINICA LIMON-POCOCI POCOCI- GUAPILES 264 m TRUE 1
265213 HOSPITAL SAN CARLOS MASCULINO ALAJUELA SAN CARLOS QUESADA TUMOR MALIGNO DE PIEL DEL LABIO NO_APLICA HISTOLOGIA ALAJUELA-SAN CARLOS SAN CARLOS- QUESADA 265 m TRUE 1
262350 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE SAN JOSE PAVAS TUMOR MALIGNO DEL ENDOMETRIO NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- PAVAS 262 f TRUE 1
270652 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA FEMENINO LIMON GUACIMO GUACIMO TUMOR MALIGNO DE LA PIEL DE LA OREJA Y DEL CONDUCTO AUDITIVO EXTERNO NO_APLICA SOLAMENTE CLINICA LIMON-GUACIMO GUACIMO- GUACIMO 270 f TRUE 1
263369 HOSPITAL MEXICO MASCULINO SAN JOSE SAN JOSE URUCA TUMOR MALIGNO DE LA PIEL DE OTRAS PARTES Y DE LAS NO ESPECIFICADAS DE LA CARA NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- URUCA 263 m TRUE 1
268107 HOSPITAL GUAPILES FEMENINO LIMON POCOCI GUAPILES TUMOR MALIGNO DEL ENDOCERVIX NO_APLICA HISTOLOGIA LIMON-POCOCI POCOCI- GUAPILES 268 f TRUE 1
264759 HOSPITAL DR. WILLIAM ALLEN MASCULINO CARTAGO TURRIALBA LA SUIZA TUMOR MALIGNO DE LA GLANDULA TIROIDES NO_APLICA HISTOLOGIA CARTAGO-TURRIALBA TURRIALBA- LA SUIZA 264 m TRUE 1
CODIGOCASO NOMBREESTABLECIMIENTO SEXO PROVINCIA CANTON DISTRITO DESC2 LATERALIDAD BASEDIAGNOSTICO locacion locacion2 raizCaso sexo Hospital HOSPITALCount
261659 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO SAN JOSE SAN JOSE SAN SEBASTIAN TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA CITOLOGIA O HEMATOLOGIA SAN JOSE-SAN JOSE SAN JOSE- SAN SEBASTIAN 261 m TRUE 1
262504 HOSPITAL MONSENOR SANABRIA FEMENINO PUNTARENAS PUNTARENAS MANZANILLO TUMOR MALIGNO DE LA UNION RECTOSIGMOIDEA NO_APLICA HISTOLOGIA PUNTARENAS-PUNTARENAS PUNTARENAS- MANZANILLO 262 f TRUE 1
267637 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE ASERRI ASERRI TUMOR MALIGNO DEL GANGLIO LINFATICO, SITIO NO ESPECIFICADO NO_APLICA HISTOLOGIA SAN JOSE-ASERRI ASERRI- ASERRI 267 f TRUE 1
264715 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA MASCULINO LIMON POCOCI GUAPILES TUMOR MALIGNO DE LA MEDULA OSEA NO_APLICA SOLAMENTE CLINICA LIMON-POCOCI POCOCI- GUAPILES 264 m TRUE 1
265213 HOSPITAL SAN CARLOS MASCULINO ALAJUELA SAN CARLOS QUESADA TUMOR MALIGNO DE PIEL DEL LABIO NO_APLICA HISTOLOGIA ALAJUELA-SAN CARLOS SAN CARLOS- QUESADA 265 m TRUE 1
262350 HOSPITAL SAN JUAN DE DIOS FEMENINO SAN JOSE SAN JOSE PAVAS TUMOR MALIGNO DEL ENDOMETRIO NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- PAVAS 262 f TRUE 1
270652 HOSPITAL DR. RAFAEL A. CALDERON GUARDIA FEMENINO LIMON GUACIMO GUACIMO TUMOR MALIGNO DE LA PIEL DE LA OREJA Y DEL CONDUCTO AUDITIVO EXTERNO NO_APLICA SOLAMENTE CLINICA LIMON-GUACIMO GUACIMO- GUACIMO 270 f TRUE 1
263369 HOSPITAL MEXICO MASCULINO SAN JOSE SAN JOSE URUCA TUMOR MALIGNO DE LA PIEL DE OTRAS PARTES Y DE LAS NO ESPECIFICADAS DE LA CARA NO_APLICA HISTOLOGIA SAN JOSE-SAN JOSE SAN JOSE- URUCA 263 m TRUE 1
268107 HOSPITAL GUAPILES FEMENINO LIMON POCOCI GUAPILES TUMOR MALIGNO DEL ENDOCERVIX NO_APLICA HISTOLOGIA LIMON-POCOCI POCOCI- GUAPILES 268 f TRUE 1
264759 HOSPITAL DR. WILLIAM ALLEN MASCULINO CARTAGO TURRIALBA LA SUIZA TUMOR MALIGNO DE LA GLANDULA TIROIDES NO_APLICA HISTOLOGIA CARTAGO-TURRIALBA TURRIALBA- LA SUIZA 264 m TRUE 1

2.5 Partir strings

Otra de las tantas formas de trabajar con strings es cuando un string se debe “partir” en varios en función de algún patrón:

## [1] "George" "David"
## [1] "Box" "Cox"

Ejercicio

1- Recopile los nombres y apellidos de los compañeros de su grupo, en un dataframe en una sola columna.

2- Cambie el vector de nombres de, por ejemplo “Daenarys Acuña” a su forma abreviada “D. Acuña”.

2.6 Expresiones regulares (regex)

Existe una forma muy poderosa de realizar reconocimiento de patrones mediante el lenguaje de expresiones regulares.Combinando expresiones regulares con las funciones del paquete stringr, se puede incrementar el poder de la manipualción de strings exponencialmente.

Vamos a utilizar primero la función str_view , cuya funcionalidad es visualizar el match entre el patrón y el string.Posteriormente se utilizarán las funciones ya revisadas, pero con patrones de regex.

2.6.1 Patrones básicos

El patrón más básico es mediante el uso de strings:

El siguiente nivel de complejidad lo agrega el patrón . que significa "cualquier caracter:

Ahora bien, si . hace el match con cualquier caracter, como se realiza el match del caracter “.” ?

Para esto, se realiza la operación “escape” ( en inglés ) con el que se le indica a regex que se desea realizar el match de ese caracter en partricular.El “escape” se realiza con el caracter \\.Entonces, para realizar el match de “.” se debe utilizar \\. .

*Notese que para el caracter “" se debe utilizar el escape \\\\.Esto que debido para escribir el caracter”" en R, se debe hacer \\.

2.6.2 Anchors

Por defecto, las expresiones regulares realizan el match sobre cualquier parte del string.Para realizar el match al inicio o al final del string se utiliza:

  • ^ Para el match del comienzo del string.
  • $ Para el match del final del string.

Para recordar cual es cual, recuerde lo siguiente: "Si usted empieza con el poder ^ termina con el dinero $.

2.6.3 Otros patrones

Existen algunos patrones especiales para realizar el match de más de un caracter:

\\d: cualquier dígito. \\s: cualquier espacio blanco (space, tab, newline). [abc]: match a, b, or c. [^abc]: match cualquier cosa excepto a, b, or c. [w]: match cualquier palabra

2.6.4 Más patrones

Existe una serie de clases preconstruídas , que se utilizan dentro de []:

[:punct:]: punctuation. [:alpha:]: letras. [:lower:]: letras minusculas. [:upper:]: letras mayusculas. [:digit:]: digitos. [:xdigit:]: digitos hex. [:alnum:]: letras y números. [:graph:]: letras, números y puntuación. [:print:]: letras, números y puntuación y espacio en blanco. [:space:]: equivalente a \s. [:blank:]: espacio y tab.

2.6.5 Repetición

Se puede controlar cuantas veces un patrón empata con operadores de repetición

?: 0 o 1. +: 1 o más. *: 0 o más.

## [1] "CC"
## [1] "CCC"
## [1] "XXX"

También se puede especificar el número de repeticiones específicamente:

{n}: exactamente n {n,}: n o más {,m}: como máximo m {n,m}: entre n y m

## [1] "CC"
## [1] "CCC"
## [1] "XXX"

2.6.6 Alternación

| es el operador de alternación, para que se puede escoger entre varios patrones:

2.6.7 Ejemplos compuestos

##  [1] "hospital dr. rafael a. calderon guardia"          
##  [2] "hospital monsenor sanabria"                       
##  [3] "hospital san juan de dios"                        
##  [4] "hospital dr. rafael a. calderon guardia"          
##  [5] "hospital san carlos"                              
##  [6] "hospital san juan de dios"                        
##  [7] "hospital dr. rafael a. calderon guardia"          
##  [8] "hospital mexico"                                  
##  [9] "hospital guapiles"                                
## [10] "hospital dr. william allen"                       
## [11] "hospital san juan de dios"                        
## [12] "hospital san juan de dios"                        
## [13] "hospital san juan de dios"                        
## [14] "hospital san juan de dios"                        
## [15] "hospital dr. rafael a. calderon guardia"          
## [16] "area de salud de hatillo (cl. dr. solon nunez f.)"
## [17] "hospital dr. max peralta jimenez"                 
## [18] "hospital san juan de dios"                        
## [19] "hospital mexico"                                  
## [20] "hospital dr. rafael a. calderon guardia"
##  [1] 14 10  9 14  6  9 14  6  7  8  9  9  9  9 14 14 10  9  6 14
##  [1] 39 26 25 39 19 25 39 15 17 26 25 25 25 25 39 49 32 25 15 39
##  [1] 0.3589744 0.3846154 0.3600000 0.3589744 0.3157895 0.3600000 0.3589744
##  [8] 0.4000000 0.4117647 0.3076923 0.3600000 0.3600000 0.3600000 0.3600000
## [15] 0.3589744 0.2857143 0.3125000 0.3600000 0.4000000 0.3589744
## [1] 1732
## [1] 36
## [1] 35
## [1] 332
## [1] "-pple"  "p-ar"   "b-nana"
## [1] "-ppl-"  "p--r"   "b-n-n-"
##  [1] "HOSPITAL DR RAFAEL A CALDERON GUARDIA"
##  [2] "HOSPITAL MONSENOR SANABRIA"           
##  [3] "HOSPITAL SAN JUAN DE DIOS"            
##  [4] "HOSPITAL DR RAFAEL A CALDERON GUARDIA"
##  [5] "HOSPITAL SAN CARLOS"                  
##  [6] "HOSPITAL SAN JUAN DE DIOS"            
##  [7] "HOSPITAL DR RAFAEL A CALDERON GUARDIA"
##  [8] "HOSPITAL MEXICO"                      
##  [9] "HOSPITAL GUAPILES"                    
## [10] "HOSPITAL DR WILLIAM ALLEN"

2.6.8 Agrupación

Se utiliza () para definir grupos de diferentes patrones(match agrupado:

##  [1] "The birch canoe slid on the smooth planks."       
##  [2] "Glue the sheet to the dark blue background."      
##  [3] "It's easy to tell the depth of a well."           
##  [4] "These days a chicken leg is a rare dish."         
##  [5] "Rice is often served in round bowls."             
##  [6] "The juice of lemons makes fine punch."            
##  [7] "The box was thrown beside the parked truck."      
##  [8] "The hogs were fed chopped corn and garbage."      
##  [9] "Four hours of steady work faced us."              
## [10] "Large size in stockings is hard to sell."         
## [11] "The boy was there when the sun rose."             
## [12] "A rod is used to catch pink salmon."              
## [13] "The source of the huge river is the clear spring."
## [14] "Kick the ball straight and follow through."       
## [15] "Help the woman get back to her feet."             
## [16] "A pot of tea helps to pass the evening."          
## [17] "Smoky fires lack flame and heat."                 
## [18] "The soft cushion broke the man's fall."           
## [19] "The salt breeze came across from the sea."        
## [20] "The girl at the booth sold fifty bonds."
##  [1] "the smooth" "the sheet"  "the depth"  "a chicken"  "the parked"
##  [6] "the sun"    "the huge"   "the ball"   "the woman"  "a helps"